我的目标是正在进行连接操作,并且查询值必须存储在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;
如何解决此问题?
答案 0 :(得分:0)
查询返回一个匿名类型的IEnumerable,因为您正在使用select new { }
创建一个无类型序列
如果选择使用确定的目标类型 - 即select CustDataRow
- 您将能够使用CopyToDataTable(),但为了您的目的,这可能需要您创建一个帮助对象。