我在加入两个DbSet时遇到麻烦,并继续收到“无法推断的错误”。我努力寻找解决方案,所以我想我会分享我的简单答案。乔恩·斯凯特(Jon Skeet)等人发表了好几篇好文章,但大多数答案都在我头上。
这是引起我麻烦的代码:
using(var db = new SomeDataContext())
{
db.DemandData
.Where(demand=> demand.ID == SearchID)
.Join(db.CUST_ORDER_LINE,
supply=> new { supply.LINE, supply.SALES_ORDER_ID },
demand=> new { demand.LINE_NO, demand.CUST_ORDER_ID },
(supply, demand) => new { custOrderLineReturn = demand })
.Select(s => s.custOrderLineReturn )
.ToList();
}
最佳答案
我已经做过很多次这种联接,以至于直到我从Justin Niessner here找到一篇帖子说“匿名类型(以及它们的类型)中的属性名称必须完全匹配”后,我才弄清楚为什么它不起作用。”那把我引到了这段代码:
using(var db = new SomeDataContext())
{
return db.DemandData
.Where(demand=> demand.ID == SearchID)
.Join(db.CUST_ORDER_LINE,
supply=> new { LINE_NO = supply.LINE, CUST_ORDER_ID = supply.SALES_ORDER_ID },
demand=> new { demand.LINE_NO, demand.CUST_ORDER_ID },
(supply, demand) => new { custOrderLineReturn = demand })
.Select(s => s.custOrderLineReturn )
.ToList();
}
在第六行中,我添加了与第7行中的字段名称相匹配的变量LINE_NO =和CUST_ORDER_ID =。
关于linq - LINQ Lambda Join错误-无法从使用情况推断出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12044873/