Rumah >pembangunan bahagian belakang >C++ >Bagaimana cara menukar senarai generik dengan cekap ke data dalam C#?

Bagaimana cara menukar senarai generik dengan cekap ke data dalam C#?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-30 21:41:12490semak imbas

How to Efficiently Convert Generic Lists to DataTables in C#?

dengan cekap mengubah senarai generik ke dalam data dalam c#

Banyak pemaju C# menghadapi cabaran untuk menukar senarai generik kepada datatables. Walaupun refleksi menawarkan penyelesaian, kaedah yang lebih cekap wujud. Artikel ini meneroka pendekatan yang optimum.

memanfaatkan fastmember untuk kelajuan

3

alternatif pra -.net 3.5: Refleksi dan Hyperdescriptor

<code class="language-csharp">IEnumerable<sometype> data = ...;
DataTable table = new DataTable();
using(var reader = ObjectReader.Create(data)) {
    table.Load(reader);
}</code>
Sebelum .NET 3.5, pemaju bergantung pada refleksi atau hyperdescriptor (tersedia dalam .net 2.0):

Pengoptimuman Prestasi: Hyperdescriptor

<code class="language-csharp">public static DataTable ToDataTable<T>(this IList<T> data)
{
    PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T));
    DataTable table = new DataTable();
    for (int i = 0; i < props.Count; i++)
    {
        PropertyDescriptor prop = props[i];
        table.Columns.Add(prop.Name, prop.PropertyType);
    }
    foreach (T item in data)
    {
        DataRow row = table.NewRow();
        for (int i = 0; i < props.Count; i++)
        {
            row[i] = props[i].GetValue(item);
        }
        table.Rows.Add(row);
    }
    return table;
}</code>
Untuk memaksimumkan prestasi, membolehkan Hyperdescriptor untuk jenis objek adalah penting. Ujian penanda aras mendedahkan penambahbaikan kelajuan yang besar:

Kaedah Standard: 27179 ms

    Hyperdescriptor Enabled: 6997 MS
  • Dengan menggunakan teknik -teknik ini, pemaju dapat meningkatkan kecekapan senarai generik menukarkan kepada data dalam aplikasi C# mereka.

Atas ialah kandungan terperinci Bagaimana cara menukar senarai generik dengan cekap ke data 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