2015-05-22 14 views
5

Tôi đang cố gắng thực hiện truy vấn sql đơn giản này với LINQ. Nhưng nó cho tôi lỗi.Cách thực hiện các phép nối trái trong LINQ trên nhiều trường trong một lần tham gia

Dưới đây là các truy vấn SQL mà cần phải conver để 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) 

Bỏ qua @groupID. sẽ được cung cấp dưới dạng tham số hàm cho truy vấn LINQ.

Đây là LINQ truy vấn những gì tôi đã thử.

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

Trường hợp groupID được cung cấp làm thông số chức năng. Cả GroupID và PersonID đều là int. Nhưng nó cho tôi lỗi sau,

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

Trợ giúp nhỏ sẽ được đánh giá cao.

Trả lời

6

Mã của bạn

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

Thay đổi nó để

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

Bằng cách đó nó sẽ tham gia sử dụng các loại Chưa xác định

+0

Cảm ơn bạn. Nó hoạt động :) –

Các vấn đề liên quan