LINQ to DataTable-在Datatable问题中获取查询值(CopyToDataTable)

时间:2015-11-24 11:27:35

标签: c# linq datatable linq-to-dataset

我的目标是正在进行连接操作,并且查询值必须存储在Datatable中。

var query = from db_data1 in DBData1.AsEnumerable()
            join cust_data1 in DBData2.AsEnumerable()
            on db_data1.Field<string>("FULLNAME").Trim() equals
            cust_data1.Field<string>("Name").Trim()
            where 
            cust_data1.Field<string>("Apartment").Trim() == db_data1.Field<string>("SERVICE_APARTMENT").Trim()
            &&   cust_data1.Field<string>("Name").Trim() == db_data1.Field<string>("FULLNAME").Trim()
            select new
              {
                  Name = db_data1.Field<string>("FULLNAME"),
                  ACCOUNT_NUMBER = db_data1.Field<string>("ACCOUNT_NUMBER")
              };

           DataTable merged;
           if (query.Any())
               merged = query.**CopyToDataTable**();
           else
               merged = DBData1.Clone();

但是我在 CopyToDataTable()功能中遇到错误

  

类型&#39; AnonymousType#1&#39;不能用作类型参数&#39; T&#39;在里面   通用类型或方法   &#39; System.Data.DataTableExtensions.CopyToDataTable(System.Collections.Generic.IEnumerable)&#39 ;.   匿名类型#1&#39;没有隐式参考转换。至   &#39;的System.Data.DataRow&#39;

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

查询返回一个匿名类型的IEnumerable,因为您正在使用select new { }创建一个无类型序列

如果选择使用确定的目标类型 - 即select CustDataRow - 您将能够使用CopyToDataTable(),但为了您的目的,这可能需要您创建一个帮助对象。