有没有办法将LINQ表达式的结果转换为a DataTable
而不单步执行每个元素?
相信这位博客,但我在这里改进了他的算法.让自己成为一种扩展方法:
public static DataTable ToADOTable(this IEnumerable varlist) { DataTable dtReturn = new DataTable(); // Use reflection to get property names, to create table // column names PropertyInfo[] oProps = typeof(T).GetProperties(); foreach (PropertyInfo pi in oProps) { Type colType = pi.PropertyType; if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition() == typeof(Nullable<>))) colType = colType.GetGenericArguments()[0]; dtReturn.Columns.Add(new DataColumn(pi.Name, colType)); } foreach (T rec in varlist) { DataRow dr = dtReturn.NewRow(); foreach (PropertyInfo pi in oProps) dr[pi.Name] = pi.GetValue(rec, null) == null ? DBNull.Value : pi.GetValue(rec, null); dtReturn.Rows.Add(dr); } return (dtReturn); }
用法:
DataTable dt = query.ToADOTable();