LINQ Lambda 连接错误 - 无法从使用中推断
Posted
技术标签:
【中文标题】LINQ Lambda 连接错误 - 无法从使用中推断【英文标题】:LINQ Lambda Join Error - cannot be inferred from the usage 【发布时间】:2012-08-16 05:01:00 【问题描述】:我在加入两个 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();
【问题讨论】:
【参考方案1】:我已经多次执行此连接操作,直到我发现 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 = 。
【讨论】:
你刚刚为我节省了一个小时的调试时间以上是关于LINQ Lambda 连接错误 - 无法从使用中推断的主要内容,如果未能解决你的问题,请参考以下文章
帮助我使用实体框架从 SQL 转换为 linq 嵌套 lambda 表达式
如何将带有内连接的 sql 查询转换为 linq lambda 表达式?