无法将数据从查询复制到数据表
Posted
技术标签:
【中文标题】无法将数据从查询复制到数据表【英文标题】:Cannot copy data from query to datatable 【发布时间】:2016-03-06 21:43:39 【问题描述】:我有一个小问题,我只是找不到解决方法。
对于我的数据表 Dictionar.DtDomenii,我需要从我的另一个数据表 Dictionar.Dt 复制唯一数据。
我写了一个查询,但是当使用query.CopyToDataTable()
将数据复制到我的DtDomenii
表中时,“CopyToDataTable”函数没有显示...
我做错了吗?有没有更简单的方法可以将不同的数据(我的示例中的类别)从一个数据表复制到另一个数据表?
PS:我已经阅读了来自MSDN https://msdn.microsoft.com/en-us/library/bb386921%28v=vs.110%29.aspx的信息
void LoadCategories()
var query = (from cat in Dictionar.dt.AsEnumerable()
select new
categorie = categorii.Field<string>("Categoria")
).Distinct();
// This statement does not work:
Dictionar.dtDomenii = query.CopyToDataTable();
【问题讨论】:
尝试使用 DataRow,如下所述:***.com/questions/16/… 接受答案的评论员声称.NET 3.5 之后不支持这种方式。 【参考方案1】:只有 DataRow 的集合可以使用CopyToDataTable
方法。例如:
DataTable table = new DataTable();
table.AsEnumerable().CopyToDataTable(); // this works
List<DataRow> dataRows = new List<DataRow>();
dataRows.CopyToDataTable(); // this also works
List<string> strings = new List<string>();
strings.CopyToDataTable(); // this does not work
您查询的select new...
部分正在将DataRow 转换为object。您需要先将对象转换回 DataRows,然后才能使用 CopyToDataTable
方法。
你可能做这样的事情会更好:
DataTable copy = Dictionar.dt
.AsEnumerable() // now an enumerable of DataRow
.Distinct() // remove duplicates, still an enumerable of DataRow
.CopyToDataTable(); // done!
您也可以使用Dictionar.dt.Copy()
制作表格的完整副本,然后手动删除重复的行。
【讨论】:
以上是关于无法将数据从查询复制到数据表的主要内容,如果未能解决你的问题,请参考以下文章