linq - LINQ Lambda Join错误-无法从使用情况推断出

标签 linq join lambda

我在加入两个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/

相关文章:

c# - 在 LINQ 查询中填充对象数组

c# - 在 C# 中对列表进行分组和求和

javascript - 在 Typescript 中将表达式作为过滤器函数的参数传递

mysql - 查询规范化数据库,3张表

sql - 如何访问 Rails3 中的连接表属性?

mysql - 从多列连接到一张表

c# - C# 编译器或 JIT 能否优化掉 lambda 表达式中的方法调用?

java - 如何在没有循环且仅使用foldLeft的情况下获得minVal?

c# - 使用 LINQ 解析 XML 获取子元素

c++ - 传递给多参数 lambda 表达式的参数