与linq的多个内连接

时间:2009-12-22 18:12:00

标签: sql linq inner-join

我有以下sql语句,需要知道如何在linq中编写它,但我无法弄清楚如何编写多个内连接

SELECT Zugehörigkeiten.PK_Dept_ID
FROM mitarbeiter
    INNER JOIN (abteilungen
        INNER JOIN Zugehoerigkeiten
        ON abteilungen.PK_Dept_ID = Zugehoerigkeiten.PK_Dept_ID)
    ON mitarbeiter.MA_ID = Zugehoerigkeiten.MA_ID
WHERE (((Zugehörigkeiten.MA_ID)=1));

这就是我所拥有的:

var erg = from mitarbeiter
          join abteilungen
          join Zugehoerigkeiten on abteilungen.PK_Dept_ID equals zugehoerigkeiten.PK_Dept_ID on mitarbeiter.MA_ID equals Zugehoerigkeiten.MA_ID
          where zugehoerigkeiten.MA_ID=1

1 个答案:

答案 0 :(得分:1)

您在linq查询中缺少from <some collection>

此外,要加入多个值,您需要创建新的匿名对象,因为您只能拥有一个on <foo> equals <bar>

var erg = from mitarbeiter in mitarbeiters
          join a in abteilungen
          join z in Zugehoerigkeiten 
              on new { a.PK_Dept_ID, mitarbeiter.MA_ID }
              equals new { z.PK_Dept_ID, z.MA_ID }
          where zugehoerigkeiten.MA_ID=1
          select ...

有时它可以简单得多。请参阅thisthis回答。