通过两个属性就地排序列表

Ham*_*mma 2 c# class list reorderlist

我有一个类,有两个属性,名称和位置.我想通过Position按顺序对此列表进行排序,具有相同位置的元素应按名称排序.我正在制作静态列表,所以我想在原地工作.

到目前为止,我设法通过一个属性订购列表:

list.Sort((x, y) => x.Position.CompareTo(y.Position));
Run Code Online (Sandbox Code Playgroud)

这段代码正常工作,我有按位置排序的列表,但我不知道如何实现第二部分.我发现了这个问题,但我不明白答案.

有人可以帮帮我吗?

小智 5

我会使用"OrderBy"和"ThenBy":

  IEnumerable<Person> orderedPersons = persons.OrderBy(item => item.Position)
            .ThenBy(item => item.Name);
Run Code Online (Sandbox Code Playgroud)

  • 这是按 2 个属性排序的最简单方法,但确实需要创建一个新列表,而 OP 不想这样做。(尽管没有太多理由需要在列表中工作 - 如果列表非常大,则保存性能) (2认同)