我对Linq有一个大致的理解问题。我已经尝试在其他线程中找到答案,但没有成功。 为什么此查询不起作用?我有两个表:一个包含客户数据,另一个包含订单数据,现在尝试连接它们。但它失败了,我还不明白为什么? 在我看来,它与任何其他教程一样完成。
IEnumerable<DataRow> query = from cust_ in Cust.AsEnumerable()
join order_ in Orders.AsEnumerable() on cust_.Field<int>("ID") equals order_.Field<int>("Customer ID")
select new { customer = cust_.Field<string>("LastName") }
这是它抛出的错误度量:
无法将类型"System.Collections.Generic.IEnumerable<<anonymous 类型:System.Data.DataRow cust_, System.Data.DataRoworder_>>' 转换为 'System.Collections.Generic.IEnumerable
"。存在显式转换(您是否缺少强制转换?
您的选择不是返回 DataRow,而是返回匿名类型。 要么删除"new"并返回一个字符串,
IEnumerable<string> query = from cust_ in Cust.AsEnumerable()
join order_ in Orders.AsEnumerable() on cust_.Field<int>("ID")
equals order_.Field<int>("Customer ID")
select cust_.Field<string>("LastName")
或者最好不要指定类型,而是尝试:
var query = from cust_ in Cust.AsEnumerable()
join order_ in Orders.AsEnumerable() on cust_.Field<int>("ID")
equals order_.Field<int>("Customer ID")
select new { customer = cust_.Field<string>("LastName") }