2015-05-22 18 views
5

Sto cercando di eseguire questa query sql semplice su LINQ. Ma mi dà errore.Come fare join sinistro in LINQ su più campi in join singolo

Ecco la query SQL che hanno bisogno di conver a LINQ

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) 

Ignora @groupID. che verrà fornito come parametro di funzione per la query LINQ.

Ecco la query LINQ che ho provato.

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() 

Dove groupID è fornito come parametro di funzione. Sia GroupID che PersonID sono int. Ma mi dà il seguente errore,

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

Piccolo aiuto sarebbe apprezzato.

risposta

6

tuo codice

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() 

Change a

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() 

In questo modo si unirà con il tipo anonimo

+0

Grazie. Funziona :) –