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
Libérer: 2025-01-30 21:36:12
original
670 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion
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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal