我遇到麻烦加入两个DbSets并继续收到“无法推断的错误”。我努力寻找解决方案,所以我想我会分享我的简单答案。 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();
}
答案 0 :(得分:42)
我已经连续多次这样做了,直到我发现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();
}
在第六行中,我添加了与第七行中的字段名称匹配的变量 LINE_NO = 和 CUST_ORDER_ID = 。