【发布时间】:2010-03-04 21:38:45
【问题描述】:
我们有两个表 - Tasks 和 TasksUsers(分配给任务的用户)。任务具有称为 TaskUsers 的 EntityCollection。
此查询返回每个用户名的任务数:
model.TaskCountByAssignee =
(
from t in TaskRepository.List()
from tu in t.TaskUsers
group tu by tu into tug
select new {Count = tug.Count(), UserName = tug.Key.Username}).ToList()
此查询返回:
管理员 11
LukLed 5
我希望它返回:
管理员 11
LukLed 5
空 10
有些任务没有任何分配,但我仍然希望它们出现在我的结果集中。通常,在 SQL 中,通过将join 更改为left join 来实现。在 EF 之外的 Linq 中,我可以使用 DefaultIfEmpty()。如何在 linq to entity 中完成?
【问题讨论】:
-
@LukLed - 我删除了我的答案,因为它没有帮助。对不起...
-
您确定不能使用 DefaultIfEmpty()?见msdn.microsoft.com/en-us/vcsharp/ee908647.aspx#leftouterjoin
-
@Foole:我写了,如果不是 EntityFramework,我可以使用它,但 DefaultIfEmpty 不适用于 EF。
-
DefaultIfEmpty在 EF4 中有效,但在 EF1 中无效。
标签: c# linq entity-framework linq-to-entities