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
1 2 3 4 5 | IEnumerable<sometype> data = ...;
DataTable table = new DataTable();
using( var reader = ObjectReader.Create(data)) {
table.Load(reader);
}
|
Salin selepas log masuk
Sebelum .NET 3.5, pemaju bergantung pada refleksi atau hyperdescriptor (tersedia dalam .net 2.0):
Pengoptimuman Prestasi: Hyperdescriptor
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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;
}
|
Salin selepas log masuk
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!