GroupJoin 將外部序列與內部序列依鍵值關聯,結果為外部元素對應的內部元素群組。方法原型:
public static IEnumerable GroupJoin(
this IEnumerable outer,
IEnumerable inner,
Func outerKeySelector,
Func innerKeySelector,
Func, TResult> resultSelector)
var result = from item in
(from student in DataSource.Students
join score in DataSource.Scores on student.StudentID equals score.StudentID
select new { StudentName = student.Name, CourseID = score.CourseID, Value = score.Value })
group item by item.StudentName into Group
select new { StudentName = Group.Key, Group = Group };
此操作結合了 Join 與 GroupBy,產生階層式結果:每位學生對應其所有成績群組。
至此,LINQ 對應 SQL 的核心操作(投影、篩選、排序、分組、聯接、集合運算、聚合)已基本介紹完畢。組合這些操作可實現複雜查詢需求。建議實際動手練習,並參考 Enumerable 原始碼深入理解實作細節。