【问题标题】: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();
}

【问题讨论】:

标签: c# linq


【解决方案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() 制作表格的完整副本,然后手动删除重复的行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-02
    • 2012-08-30
    • 1970-01-01
    • 2011-05-10
    • 2019-06-15
    • 2017-07-13
    • 1970-01-01
    相关资源
    最近更新 更多