2

如何在 C# 中使用二次排序对列表进行排序。例如,如果我有一个名为 Student 的类,它有两个字段 FirstName 和 LastName。到目前为止,我对列表进行了如下排序:

MyStudents.Sort((s1, s2) => s1.LastName.CompareTo(s2.LastName));

我想知道如何先按姓氏然后按名字对列表进行排序。谢谢。

4

3 回答 3

8

Sort没有那个能力。

Linq 可以简单地做到这一点:

MyStudents.OrderBy(s => s.LastName).ThenBy(s => s.FirstName)

确保您至少使用 .NET 3.5 并System.Linq引用了命名空间。

于 2012-12-25T13:52:47.000 回答
3

您可以使用LINQ

MyStudents.OrderBy(e => e.LastName).ThenBy(e => e.FirstName);
于 2012-12-25T13:53:06.623 回答
2

您可以使用OrderByThenBy

var sortedList = MyStudents.OrderBy(s => s.LastName).ThenBy(s=> s.FirstName);

注意OrderByandThenBy不会改变 list 的顺序并且它们MyStudents返回一个IEnumerable<Student>,所以如果你需要一个.List<Student>ToList()

于 2012-12-25T13:54:25.983 回答