LINQ Lambda联接错误-无法从用法推断

LINQ Lambda联接错误-无法从用法推断,linq,join,lambda,Linq,Join,Lambda,我在连接两个数据库集时遇到困难,并继续收到“无法推断错误”。我努力寻找解决方案,所以我想我会分享我的简单答案。Jon Skeet和其他人发了几篇很棒的帖子,但大多数答案都是我想不通的 以下是给我带来麻烦的代码: using(var db = new SomeDataContext()) { db.DemandData .Where(demand=> demand.ID == SearchID) .Join(db.CUST_ORDER_LINE

我在连接两个数据库集时遇到困难,并继续收到“无法推断错误”。我努力寻找解决方案,所以我想我会分享我的简单答案。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的帖子说“匿名类型中的属性名称(以及它们的类型)必须完全匹配”,我才明白为什么它不起作用。这让我想到了以下代码:

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=,它们与第七行中的字段名相匹配。

您刚刚为我节省了一个小时的调试时间