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]

C# Aufbaukurs

Sie haben grundlegende .NET- und C#-Kenntnisse und und wollen diese nun erweitern. Der Aufbaukurs C# führt Sie ein die Arbeit mit Interfaces und Delegates, Generics und Parallel Computing.

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!