【发布时间】:2018-01-27 14:27:10
【问题描述】:
我引用了这个问题的公认答案: LINQ to SQL multiple tables left outer join
在我的示例中,无论是否有匹配的员工记录,我都需要所有人员记录。
我正在使用以下查询(为了说明而简化):
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 : ""
};
然而,出乎我的意料,该查询产生了以下带有 INNER JOIN 的 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(或 join...into)应该可以解决这个问题?我知道我在这里一定犯了一个愚蠢的错误,但我看不到它。
【问题讨论】:
标签: entity-framework linq