Rumah > pembangunan bahagian belakang > C++ > Bagaimana dengan Cekap Menukar IEnumerable kepada DataTable dalam C#?

Bagaimana dengan Cekap Menukar IEnumerable kepada DataTable dalam C#?

Mary-Kate Olsen
Lepaskan: 2025-01-20 00:24:14
asal
532 orang telah melayarinya

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

Tukar IEnumerable kepada DataTable dengan cekap dalam C#

Artikel ini meneroka cara menukar koleksi IEnumerable kepada DataTables dengan cekap. Walaupun refleksi menyediakan kaedah, ia tidak cekap.

Kod berikut menyediakan penyelesaian yang lebih dioptimumkan:

<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>
Salin selepas log masuk

Kaedah sambungan ini mengendalikan penukaran dengan cekap, termasuk mengendalikan nilai boleh batal. Pertimbangan jenis nullable memastikan integriti data dan hasil yang boleh dipercayai.

Atas ialah kandungan terperinci Bagaimana dengan Cekap Menukar IEnumerable kepada DataTable dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan