Maison >développement back-end >C++ >Comment convertir facilement un DataReader en liste ?

Comment convertir facilement un DataReader en liste ?

DDD
DDDoriginal
2025-01-16 22:21:16318parcourir

How to Easily Convert a DataReader to a List?

Convertir efficacement DataReader en liste

DataReader est pratique pour stocker des données, mais il est parfois nécessaire de traiter des données dans d'autres formats (comme des listes). La conversion d'un DataReader en une liste fortement typée, comme List, peut être fastidieuse, mais ce n'est pas obligatoire.

Une façon de simplifier le processus consiste à créer une méthode d'extension pour gérer la conversion. 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 prend un Func qui définit comment convertir chaque ligne du DataReader en une instance de type T. Vous pouvez ensuite utiliser la méthode ToList() de LINQ pour convertir le résultat en List.

Une autre approche consiste à créer une méthode dans le type cible (Client) qui convertit à partir de DataReader. Par exemple :

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

En utilisant cette méthode vous pouvez simplement récupérer la Liste en utilisant le code suivant :

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

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