依鍵值將序列分組,回傳 IEnumerable<IGrouping<TKey, TElement>>。
var groups = DataSource.Scores.GroupBy(score => score.StudentID);
var result = from score in DataSource.Scores
group score by score.StudentID into scoreGroup
select new { StudentID = scoreGroup.Key, Group = scoreGroup };
// 方法語法重載
var result = DataSource.Scores.GroupBy(
score => score.StudentID,
(key, group) => new { StudentID = key, Group = group });
只選取雙方都有對應鍵值的元素組合。查詢學生姓名、科目、成績:
var result = from score in DataSource.Scores
join student in DataSource.Students on score.StudentID equals student.StudentID
join course in DataSource.Courses on score.CourseID equals course.CourseID
select new { StudentName = student.Name, CourseName = course.CourseName, ScoreValue = score.Value };
var result = DataSource.Scores.Join(
DataSource.Students,
score => score.StudentID,
student => student.StudentID,
(score, student) => new { StudentName = student.Name, ScoreValue = score.Value, CourseID = score.CourseID })
.Join(
DataSource.Courses,
scostu => scostu.CourseID,
course => course.CourseID,
(scostu, course) => new { StudentName = scostu.StudentName, CourseName = course.CourseName, ScoreValue = scostu.ScoreValue });