簡體   English   中英

如何在LINQ中在單個連接中的多個字段上進行左連接

[英]How to do left joins in LINQ on multiple fields in single join

我正在嘗試對LINQ執行這個簡單的SQL查詢。 但它給我錯誤。

這是需要轉換為LINQ的SQL查詢

 DECLARE @groupID int
 SET @groupID = 2
 SELECT * 
    FROM dbo.Person p
    LEFT JOIN dbo.PersonGroup pg ON ( p.PersonID = pg.PersonID AND pg.GroupID = @groupID)

忽略@groupID。 它將作為LINQ查詢的函數參數提供。

這是我試過的LINQ查詢。

from p in Person
 join pg in PersonGroup on new { p.PersonID, groupID } equals new { pg.PersonID, pg.GroupID } into t
 from rt in t.DefaultIfEmpty()

其中groupID作為函數參數提供。 GroupID和PersonID都是int。 但它給了我以下錯誤,

Error   2   The type of one of the expressions in the join clause is incorrect.  Type inference failed in the call to 'GroupJoin'.

很少的幫助將不勝感激。

你的守則

from p in Person
 join pg in PersonGroup on new { p.PersonID, groupID } equals new { pg.PersonID, pg.GroupID } into t
 from rt in t.DefaultIfEmpty()

將其更改為

from p in Person
 join pg in PersonGroup on new { Person = p.PersonID, Group = groupID } equals new { Person = pg.PersonID, Group = pg.GroupID } into t
 from rt in t.DefaultIfEmpty()

這樣它將使用匿名類型加入

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM