Linq Table 到 DataTable 转换
Posted
技术标签:
【中文标题】Linq Table 到 DataTable 转换【英文标题】:Linq Table to DataTable casting 【发布时间】:2010-12-28 10:59:18 【问题描述】:如何投射
System.Data.Linq.Table<T>
到 System.Data.DataTable
DemoDBDataContext context = new DemoDBDataContext();
DataSet ds = new DataSet();
var query = context.Customers;
ds.Tables[0] = query;
如何做到这一点?任务
ds.Tables[0] = query;
它抛出
属性或索引器
System.Data.DataTableCollection.this[int]
不能分配给它是只读的。
【问题讨论】:
【参考方案1】:您不能将 System.Data.Linq.Table 转换为 DataTable,但是您可以轻松地在 IEnumerable 上编写扩展方法将其转换为 DataTable:
public static DataTable ToDataTable<T>(this IEnumerable<T> items)
var tb = new DataTable(typeof(T).Name);
PropertyInfo[] props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach(var prop in props)
tb.Columns.Add(prop.Name, prop.PropertyType);
foreach (var item in items)
var values = new object[props.Length];
for (var i=0; i<props.Length; i++)
values[i] = props[i].GetValue(item, null);
tb.Rows.Add(values);
return tb;
来源:http://www.chinhdo.com/20090402/convert-list-to-datatable/
【讨论】:
抱歉延迟回复。它正在工作,感谢您的链接。以上是关于Linq Table 到 DataTable 转换的主要内容,如果未能解决你的问题,请参考以下文章
将 SQL 语句转换为 DataTable 上的 LINQ 查询
c#.net 如何将两个datatable拼接成一个Datatable
c#.net 如何将两个datatable拼接成一个Datatable