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

Bagaimanakah Saya Boleh Menukar IEnumerable dengan Cekap kepada DataTable dalam C#?

Susan Sarandon
Susan Sarandonasal
2025-01-20 00:27:09336semak imbas

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

Tukar IEnumerable kepada DataTable dengan cekap dalam C#

Menukar IEnumerable kepada DataTable membolehkan pembangun memproses data dalam format jadual berstruktur. Walau bagaimanapun, penyelesaian sedia ada sering bergantung pada pendekatan berasaskan refleksi yang tidak cekap. Soalan ini cuba mencari alternatif yang lebih cekap.

Pertama, coretan kod dalam jawapan yang disediakan menyediakan kaedah sambungan yang berguna:

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

Kaedah sambungan ini menyediakan cara yang mudah dan cekap untuk menukar IEnumerable kepada Jadual Data. Dengan mengendalikan jenis nullable dengan teliti, ia memastikan integriti data dan membolehkan nilai diambil menggunakan nama lajur yang ditaip kuat.

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

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