ホームページ >バックエンド開発 >C++ >C# で IEnumerable を DataTable に効率的に変換するにはどうすればよいですか?

C# で IEnumerable を DataTable に効率的に変換するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-20 00:27:09338ブラウズ

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

C# で IEnumerable を DataTable に効率的に変換する

IEnumerable を DataTable に変換すると、開発者は構造化された表形式でデータを処理できるようになります。ただし、既存のソリューションは非効率的なリフレクションベースのアプローチに依存していることがよくあります。この質問は、より効率的な代替手段を見つけることを目的としています。

まず、提供された回答のコード スニペットは、便利な拡張メソッドを提供します。

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

この拡張メソッドは、IEnumerable を DataTable に変換する便利で効率的な方法を提供します。 Null 許容型を慎重に処理することで、データの整合性が確保され、厳密に型指定された列名を使用して値を取得できるようになります。

以上がC# で IEnumerable を DataTable に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。