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

本文关键字:获取 查询 CopyToDataTable DataTable- to DataTable 问题 LINQ | 更新日期: 2023-09-27 18:24:09

我的目标是完成联接操作,并且查询值必须存储在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()函数中出错

类型"AnonymousType#1"不能用作泛型类型或方法"System.Data.DataTableExtensions.CopyToDataTable(System.Collections.Generic.IEnumerable)"。没有从"AnonymousType#1"到的隐式引用转换"System.Data.DataRow".

如何解决这个问题?

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

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

如果您选择使用明确的目标类型(即select CustDataRow),则可以使用CopyToDataTable(),不过出于您的目的,这可能需要创建一个辅助对象。