Heim >Backend-Entwicklung >C++ >Wie kann ich ein IEnumerable in C# effizient in eine DataTable konvertieren?

Wie kann ich ein IEnumerable in C# effizient in eine DataTable konvertieren?

Susan Sarandon
Susan SarandonOriginal
2025-01-20 00:27:09338Durchsuche

How Can I Efficiently Convert an IEnumerable to a DataTable in C#?

Effiziente Konvertierung von IEnumerable in DataTable in C#

Durch die Konvertierung von IEnumerable in DataTable können Entwickler Daten in einem strukturierten Tabellenformat verarbeiten. Bestehende Lösungen basieren jedoch häufig auf ineffizienten reflexionsbasierten Ansätzen. Mit dieser Frage soll eine effizientere Alternative gefunden werden.

Erstens bietet der Codeausschnitt in der bereitgestellten Antwort eine nützliche Erweiterungsmethode:

<code class="language-csharp">public static DataTable ToDataTable<T>(this IEnumerable<T> items)
{
    // 使用类型名称初始化DataTable
    var table = new DataTable(typeof(T).Name);

    // 获取类型的公共属性
    PropertyInfo[] properties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);

    // 将属性作为列添加到DataTable
    foreach (var property in properties)
    {
        var propertyType = property.PropertyType;

        // 处理可空类型
        if (propertyType.IsGenericType && propertyType.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
        {
            propertyType = Nullable.GetUnderlyingType(propertyType);
        }

        table.Columns.Add(property.Name, propertyType);
    }

    // 将每个T的属性值作为行添加到DataTable
    foreach (var item in items)
    {
        var values = new object[properties.Length];
        for (int i = 0; i < properties.Length; i++)
        {
            values[i] = properties[i].GetValue(item);
        }
        table.Rows.Add(values);
    }

    return table;
}</code>

Diese Erweiterungsmethode bietet eine bequeme und effiziente Möglichkeit, IEnumerable in eine DataTable zu konvertieren. Durch den sorgfältigen Umgang mit nullbaren Typen wird die Datenintegrität sichergestellt und das Abrufen von Werten mithilfe stark typisierter Spaltennamen ermöglicht.

Das obige ist der detaillierte Inhalt vonWie kann ich ein IEnumerable in C# effizient in eine DataTable konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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