在LINQ中,可以使用OrderBy
或OrderByDescending
方法對分組后的結果進行排序。
假設有一個學生列表,每個學生都有一個班級屬性Class
,現在要按班級分組,并在每個班級內按照學生的姓名進行排序,可以按照以下方式編寫LINQ查詢:
var students = new List<Student>();
// 分組并在組內排序
var groupedStudents = students
.GroupBy(s => s.Class)
.Select(g => new
{
Class = g.Key,
Students = g.OrderBy(s => s.Name) // 在組內按姓名排序
});
// 遍歷結果
foreach(var group in groupedStudents)
{
Console.WriteLine("班級:" + group.Class);
foreach(var student in group.Students)
{
Console.WriteLine("姓名:" + student.Name);
}
}
在這個示例中,GroupBy
方法將學生列表按班級分組,然后通過OrderBy
方法對每個班級內的學生按姓名進行排序。最后,我們使用Select
方法來創建一個新的結果對象,包含班級和已排序的學生列表。在遍歷結果時,我們可以看到每個班級內的學生已按姓名進行了排序。