33

我在加入两个 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();
    }
4

1 回答 1

69

我已经多次执行此连接,以至于我无法弄清楚为什么它不起作用,直到我在这里找到 Justin Niessner 的帖子说“匿名类型(以及它们的类型)中的属性名称必须完全匹配。” 这让我看到了这段代码:

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 =

于 2012-08-20T20:46:35.053 回答