我有一个小问题,我找不到如何修复它。
对于我的数据表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();
}
答案 0 :(得分:0)
只有 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 转换为对象。您需要先将对象转换回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()
制作表格的完整副本,然后手动删除重复的行。