LinQ:具有多个列标识符的多个连接

时间:2016-06-08 09:35:20

标签: c# linq

你能帮我理解这个错误信息。我肯定做错了什么但是什么?

join子句中某个表达式的类型不正确。调用“加入”时类型推断失败。

Res.AddRange(from jh in db.Job
             join jd in db.JobDetail on jh.number equals jd.number
             join js in db.JobSection on new { jd.number, jd.ref, jd.product } equals new { js.number, js.ref, js.Product }
             join oh in db.Order on jd.ref equals oh.ref
             join bh in db.Buyer on jh.id equals bh.id
             where jh.dateModify >= InputDate
             select jh);

错误来自此行

join js in db.JobSection on new { jd.number, jd.ref, jd.product } equals new { js.number, js.ref, js.Product }

1 个答案:

答案 0 :(得分:0)

在Evk的帮助下(见评论)我找到了解决方案

  1. 我需要命名我的变量
  2. 我需要尊重类型(即使可以为空)
  3. 正确的解决方案是

    Res.AddRange(from jh in db.Job
                 join jd in db.JobDetail on jh.number equals jd.number
                 join js in db.JobSection on new { a = jd.number, b = (int?)jd.ref, c = jd.product } equals new { a = js.number, b = js.ref, c = js.Product }
                 join oh in db.Order on jd.ref equals oh.ref
                 join bh in db.Buyer on jh.id equals bh.id
                 where jh.dateModify >= InputDate
                 select jh);