Feedback

C# - IEnumerable<T> zu DataTable

Veröffentlicht von am 11.07.2015
(1 Bewertungen)
Diese Erweiterungsmethode für IEnumerable<T> erstellt ein DataTable aus der Auflistung. Dabei werden alle öffentlichen Instanz-Eigenschaften übertragen.

Benötigte Namespaces
System.Collections.Generic
System.Data
System.Reflection
GFU-Schulungen  [Anzeige]

XML und .NET Überblick

Um auf dem neuesten Wissensstand zu sein, sollten Sie unser aktuelles ASP .NET Komplett Seminar belegen.
Nach dem Seminar kennen Sie die wichtigsten Strömungen in der Software-Technologie

ASP.NET Core - Der Einstieg

In nur 3 Tagen lernen Sie, wie man mit ASP.NET Core und den Technologien MVC, Entity Framework, WebAPI und Razor professionelle Web-Anwendungs-Architekturen aufbaut. Diese Schulung ist der perfekte Einstieg, um datengetriebene und präsentations-orientierte Applikationen auf Basis der ASP.NET Core Plattform zu erstellen.

/// <summary>
/// Erstellt ein <see cref="System.Data.DataTable"/> aus der angegebenen Auflistung.
/// </summary>
/// <typeparam name="T">Der Typ der Elemente in der Auflistung, deren öffentlichen Instanz-Eigenschaften in das <see cref="System.Data.DataTable"/> übertragen werden sollen.</typeparam>
/// <param name="source">Die Quellauflistung deren Elemente übertragen werden sollen.</param>
/// <returns>Ein DataTable mit den Elementen aus der angegebenen Auflistung.</returns>
public static DataTable ToDataTable<T>(this IEnumerable<T> source)
{
    var table = new DataTable();

    int i = 0;
    var props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
    foreach (var prop in props)
    {
        table.Columns.Add(new DataColumn(prop.Name, prop.PropertyType));
        ++i;
    }

    foreach (var item in source)
    {
        var values = new object[i];
        i = 0;
        foreach (var prop in props)
            values[i++] = prop.GetValue(item);
        table.Rows.Add(values);
    }

    return table;
}
Abgelegt unter DataTable, LINQ, Konvertieren.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!