ホームページ > バックエンド開発 > C++ > C# で IEnumerable を DataTable に効率的に変換する方法

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

Mary-Kate Olsen
リリース: 2025-01-20 00:24:14
オリジナル
534 人が閲覧しました

How to 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并收集属性
    DataTable table = new DataTable(typeof(T).Name);
    PropertyInfo[] props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);

    // 从属性添加列
    foreach (var prop in props)
    {
        Type propType = prop.PropertyType;

        // 处理可空类型
        if (propType.IsGenericType && propType.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
            propType = new NullableConverter(propType).UnderlyingType;

        table.Columns.Add(prop.Name, propType);
    }

    // 从属性值添加数据行
    foreach (var item in items)
    {
        object[] values = new object[props.Length];
        for (int i = 0; i < props.Length; i++)
        {
            values[i] = props[i].GetValue(item, null);
        }
        table.Rows.Add(values);
    }

    return table;
}</code>
ログイン後にコピー

この拡張メソッドは、Null 許容値の処理を含め、変換を効率的に処理します。 Null 許容型を考慮することで、データの整合性と信頼性の高い結果が保証されます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート