3
我有一個僱員表:如何添加左外連接到分組並總結LINQ查詢
EmployeeID | EmployeeName
---------------------------
1 | Jack
2 | Jill
3 | Roger
而且一出現表:
OccurrenceID | EmployeeID | Points
--------------------------------------
1 | 1 | 5
2 | 2 | 3
3 | 1 | 1
我有一個工作LINQ查詢組,總和兩個表一起:
groupedOccurrences = (from o in db.Occurrences.Include(o => o.Employee)
where o.OccurrenceDate >= beginDate
&& o.OccurrenceDate <= endDate
group o by o.Employee.EmployeeName into g
select new OccurrenceByQuarter
{
Name = g.Key,
Total = g.Sum(o => o.Points)
});
哪個產生這樣的輸出:
Jack 6
Jill 3
但是我想讓員工羅傑在0分的輸出中顯示出來。我試着加入加盟LINQ查詢是這樣的:
groupedOccurrences = (from e in db.Employees
from o in db.Occurrences
join o in db.Occurrences on e.EmployeeID equals o.EmployeeID into j1
from j2 in j1.DefaultIfEmpty()
group j2 by e.EmployeeName into g
select new OccurrenceByQuarter
{
Name = g.Key,
Total = g.Sum(o => o.Points)
});
但我最終點是極大膨脹(如24倍,他們應該怎麼定)的數量。
我也試圖讓達爾如果爲null,通過改變總的聲明,我OccurrencesByQuarter類返回0到public int? Total { get; set; }
但後來當我試圖改變LINQ查詢到包括Total = g.Sum(o => o.Points) ?? 0
我得到一個錯誤,指出「運算符不能應用於int和int類型的操作數「。
任何幫助將不勝感激。
那很美。謝謝! – Splendor
太棒了! 「into g」使linq語句實際上成爲一個外連接,如果省略了into子句,它只是執行正常的連接,只有匹配的行纔會被檢索。並且會有員工x發生這些事情,而不是這裏產生的好團體 –