【问题标题】:C# secondary sort with lambda expression使用 lambda 表达式的 C# 二级排序
【发布时间】:2012-12-25 22:02:15
【问题描述】:

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

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

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

【问题讨论】:

    标签: c#


    【解决方案1】:

    Sort 没有这种能力。

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

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

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

    【讨论】:

      【解决方案2】:

      你可以使用LINQ:

      MyStudents.OrderBy(e => e.LastName).ThenBy(e => e.FirstName);
      

      【讨论】:

      • 你打错了 - ThenBy 不是 ThanBy
      【解决方案3】:

      您可以使用OrderByThenBy

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

      请注意,OrderByThenBy 不会更改 MyStudents 列表的顺序,它们会返回 IEnumerable<Student>,因此如果您需要 List<Student>,请使用 ToList()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-13
        • 2013-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多