Maison >développement back-end >C++ >Comment puis-je convertir efficacement un DataReader en liste dans .NET ?

Comment puis-je convertir efficacement un DataReader en liste dans .NET ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-16 22:17:09986parcourir

How Can I Efficiently Convert a DataReader into a List in .NET?

Traitez efficacement les données : convertissez DataReader en liste

Lors du traitement de données dans un environnement .NET, vous souhaiterez peut-être convertir un DataReader (un flux de données qui lit uniquement vers l'avant) dans un format plus gérable, tel qu'une liste. Cette transformation vous permet d’accéder et de traiter plus efficacement les données structurées.

Solution : Méthodes d'extension

Une façon de convertir consiste à utiliser des méthodes d'extension. Un exemple est le suivant :

<code class="language-csharp">public static IEnumerable<T> Select<T>(this IDataReader reader,
                                       Func<IDataReader, T> projection)
{
    while (reader.Read())
    {
        yield return projection(reader);
    }
}</code>

Cette méthode d'extension vous permet d'utiliser des fonctions de projection pour sélectionner des données d'un DataReader et les convertir en IEnumerable.

Exemples d'utilisation

Pour convertir des données en liste vous pouvez utiliser le code suivant :

<code class="language-csharp">using (IDataReader reader = ...)
{
    List<Customer> customers = reader.Select(r => new Customer {
        CustomerId = r["id"] is DBNull ? null : r["id"].ToString(),
        CustomerName = r["name"] is DBNull ? null : r["name"].ToString()
    }).ToList();
}</code>

Cet exemple convertit les lignes du DataReader en une liste d'objets Customer.

Alternative : méthodes spécialisées pour les types d'entités

Vous pouvez également créer une méthode statique dédiée dans l'entité Client :

<code class="language-csharp">public static Customer FromDataReader(IDataReader reader) { ... }</code>

Cette méthode est chargée de créer un objet Customer basé sur les données du DataReader.

En utilisant cette méthode, vous pouvez simplifier le processus de conversion :

<code class="language-csharp">using (IDataReader reader = ...)
{
    List<Customer> customers = reader.Select<Customer>(Customer.FromDataReader)
                                     .ToList();
}</code>

Grâce à ces techniques, vous pouvez convertir efficacement les données de DataReader en List, tirant ainsi parti de la puissance de LINQ pour une manipulation et un traitement ultérieurs des données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn