Maison >développement back-end >C++ >Comment puis-je convertir efficacement les listes génériques en données dans .NET?

Comment puis-je convertir efficacement les listes génériques en données dans .NET?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-30 21:36:12727parcourir

le dataTable

Dans .NET, vous pouvez rencontrer une scène qui doit convertir la liste générique ou l'objet énuméré dans l'objet DataTable. Bien qu'il n'y ait pas de méthode statique construite, cette conversion peut être effectuée et plusieurs méthodes peuvent être utilisées.

Utilisez FastMember

Dans la version .NET Framework 4.5 ou supérieure, vous pouvez utiliser la bibliothèque FastMember à NuGet. Cette bibliothèque offre des fonctions de méta-programmation élevées:

<code class="language-csharp">using FastMember;
using System.Data;

IEnumerable<sometype> data = ...;
DataTable table = new DataTable();
using (var reader = ObjectReader.Create(data))
{
    table.Load(reader);
}</code>

Utiliser la réflexion

Avant le .NET Framework 4.5, vous pouvez utiliser la réflexion pour créer DataTable dynamiquement à partir de la liste générique. Par rapport à FastMember, il s'agit d'une méthode à faible efficacité:

<code class="language-csharp">public static DataTable ToDataTable<T>(this IList<T> data)
{
    PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T));
    DataTable table = new DataTable();
    for (int i = 0; i < props.Count; i++)
    {
        PropertyDescriptor prop = props[i];
        table.Columns.Add(prop.Name, prop.PropertyType);
    }
    foreach (T item in data)
    {
        DataRow row = table.NewRow();
        for (int i = 0; i < props.Count; i++)
        {
            row[i] = props[i].GetValue(item);
        }
        table.Rows.Add(row);
    }
    return table;
}</code>
Cette fonction peut appeler n'importe quelle liste générique pour générer une DataTable basée sur un attribut d'objet de liste.

Précautions de performance

La méthode FastMember est beaucoup plus rapide que les méthodes reflétées. Cependant, les performances de DataTable ont toujours une place à l'amélioration, car ses caractéristiques de performance peuvent varier en fonction de facteurs tels que le volume de données et le nombre de colonnes.

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