首頁 > 後端開發 > C++ > 如何在 C# 中有效率地將 IEnumerable 轉換為 DataTable?

如何在 C# 中有效率地將 IEnumerable 轉換為 DataTable?

Mary-Kate Olsen
發布: 2025-01-20 00:24:14
原創
531 人瀏覽過

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>
登入後複製

此擴充方法有效率地處理轉換,包括處理可空值。對可空類型的考慮確保了資料完整性和可靠的結果。

以上是如何在 C# 中有效率地將 IEnumerable 轉換為 DataTable?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板