Heim > Backend-Entwicklung > C++ > Wie kann ich generische Listen effizient in DataTables in .NET konvertieren?

Wie kann ich generische Listen effizient in DataTables in .NET konvertieren?

Linda Hamilton
Freigeben: 2025-01-30 21:36:12
Original
753 Leute haben es durchsucht

Das DataTable

In .NET können Sie auf eine Szene stoßen, in der die generische Liste oder das aufzählige Objekt in das DataTable -Objekt konvertiert werden muss. Obwohl es keine statische Methode erstellt hat, kann diese Konvertierung durchgeführt werden und mehrere Methoden können verwendet werden.

Fastmember verwenden

In der Version .NET Framework 4.5 oder höher können Sie die Fastmember -Bibliothek in Nuget verwenden. Diese Bibliothek liefert Hochleistungs -Meta -Programmierfunktionen:

using FastMember;
using System.Data;

IEnumerable<sometype> data = ...;
DataTable table = new DataTable();
using (var reader = ObjectReader.Create(data))
{
    table.Load(reader);
}
Nach dem Login kopieren

Verwenden Sie Reflexion <<>

Vor dem .NET Framework 4.5 können Sie die Reflexion verwenden, um DataTable dynamisch aus der generischen Liste zu erstellen. Im Vergleich zu Fastmember handelt es sich um eine Methode mit niedrigem Effizienz:

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;
}
Nach dem Login kopieren
Diese Funktion kann jede generische Liste aufrufen, um ein DataTable basierend auf einem Listenobjektattribut zu generieren.

Leistungsvorkehrungen

Fastmember -Methode ist viel schneller als reflektierte Methoden. Die Leistung von DataTable hat jedoch noch Verbesserungsraum, da die Leistungsmerkmale je nach Faktoren wie Datenvolumen und Anzahl der Spalten variieren können.

Das obige ist der detaillierte Inhalt vonWie kann ich generische Listen effizient in DataTables in .NET konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage