我們有兩個表 - 任務和任務用戶(分配給任務的用戶)。任務具有稱爲TaskUsers的EntityCollection。Linq to entities - 如何定義左連接進行分組?
該查詢返回每名任務數:
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
null 10
一些任務沒有任何分配,但我仍然希望將它們放在我的結果集中。通常,在SQL中,它通過將join
更改爲left join
來實現。在EF之外的Linq中,我可以使用DefaultIfEmpty()。如何在LINQ中對實體進行處理?
@LukLed - 我刪除了我的答案,因爲它沒有幫助。對不起... – David 2010-03-04 04:45:29
你確定你不能使用DefaultIfEmpty()嗎?請參閱http://msdn.microsoft.com/en-us/vcsharp/ee908647.aspx#leftouterjoin – Foole 2010-03-04 07:32:41
@Fole:我寫道,我可以使用它,如果它不是EntityFramework,但DefaultIfEmpty不適用於EF。 – LukLed 2010-03-04 07:36:50