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
/// <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!