访问数据库上的 LINQ 联接查询



我对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.DataRow

order_>>' 转换为 '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")  }

最新更新