我引用接受這個問題的答案: LINQ to SQL multiple tables left outer joinLinq Group加入(加入...)INNER JOIN的結果?
在我的例子,我需要所有的人記錄,而不管是否有匹配的員工記錄。
我使用下面的查詢(簡化illustation的緣故):
var result = from person in context.Person
join staffQ in context.Staff
on person.StaffID equals staffQ.ID into staffStaffIDGroup
from staff in staffStaffIDGroup.DefaultIfEmpty()
select new PersonModel()
{
ID = person.ID,
Fname = person.Fname,
Lname = person.Lname,
Sex = person.Sex,
Username = staff != null ? staff.Username : ""
};
然而,出乎我的意料,查詢結果在下面的SQL與內部連接,從而消除了我需要的記錄結果集。
SELECT
[Extent1].[ID] AS [ID],
[Extent1].[fname] AS [fname],
[Extent1].[lname] AS [lname],
[Extent1].[sex] AS [sex],
[Extent2].[username] AS [username]
FROM [dbo].[Person] AS [Extent1]
INNER JOIN [dbo].[Staff] AS [Extent2] ON [Extent1].[StaffID] = [Extent2].[ID]
我以爲GroupJoin(或加入...到)應該繞過這個?我知道我一定在這裏犯了一個愚蠢的錯誤,但我看不到它。
就是這樣。幾年前我也碰到過這個,並且完全忘了。 – esmoore68