LINQ Lambda加入错误 - 无法从使用中推断出来

时间:2012-08-20 20:46:35

标签: linq join lambda

我遇到麻烦加入两个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();
    }

1 个答案:

答案 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 =