【发布时间】:2011-08-17 13:08:22
【问题描述】:
我有以下扩展,它从IEnumerable 生成DataTable:
public static DataTable AsDataTable<T>(this IEnumerable<T> enumerable)
{
DataTable table = new DataTable();
T first = enumerable.FirstOrDefault();
if (first == null)
return table;
PropertyInfo[] properties = first.GetType().GetProperties();
foreach (PropertyInfo pi in properties)
table.Columns.Add(pi.Name, pi.PropertyType);
foreach (T t in enumerable)
{
DataRow row = table.NewRow();
foreach (PropertyInfo pi in properties)
row[pi.Name] = t.GetType().InvokeMember(pi.Name, BindingFlags.GetProperty, null, t, null);
table.Rows.Add(row);
}
return table;
}
但是,在大量数据上,性能不是很好。是否有任何我看不到的明显性能修复?
【问题讨论】:
标签: c# linq performance datatable ienumerable