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 连接错误 - 无法从使用中推断的主要内容,如果未能解决你的问题,请参考以下文章

linq/lambda 查询中的双内连接?

帮助我使用实体框架从 SQL 转换为 linq 嵌套 lambda 表达式

如何将带有内连接的 sql 查询转换为 linq lambda 表达式?

如何解决 C# 中 linq 的 lambda 表达式中的对象引用错误?

内部在LINQ Lambda中使用两个相等的内部连接

带有语句体的 lambda 表达式无法转换为 nopCommerce 中的表达式树 [重复]