我有一个 C# 自定义对象列表,我需要根据对象的多个属性对该列表进行排序。每个对象都有多个属性,我想首先按 PropertyA 升序对列表进行排序,然后按 PropertyB 降序排序。在 C# 中实现此目的最有效、最简洁的方法是什么?
谢谢!
我尝试过将 List.Sort() 和 OrderBy() 与 LINQ 结合使用,但我在同时按多个属性排序时遇到问题。有人可以提供代码示例或为我指明正确的方向以有效地实现这种排序吗?
使用 LINQ,您可以使用
OrderBy(Descending)
,然后使用 ThenBy(Descending)
。
Enumerable.ThenByDescending
:
按降序对序列中的元素执行后续排序。
以下:
var sorted = myCollection
.OrderBy(i => i.PropertyA)
.ThenByDescending(i => i.PropertyB)
.ToList();
将按
PropertyA
(升序)对集合进行排序,然后按 PropertyB
降序排列,并将结果放入新列表中。
您可以在 OrderBy 之后使用 ThenBy。并且不要忘记最后使用 .ToList() 。
var sortedList = listOfCustomObjects
.OrderBy(obj => obj.PropertyA)
.ThenBy(obj => obj.PropertyB)
.ToList();