如何按 OrderBy() 2 个或更多参数
本文关键字:参数 何按 OrderBy | 更新日期: 2023-09-27 18:17:10
例如,我有一个具有 3 个属性的对象:名称、价格和描述。我需要对这些对象的集合进行排序。只需按一个参数进行排序很容易:
var sortedList = ObjectCollection.OrderBy(x => x.Name).ToList();
但是如何按 2 个参数(名称和价格(执行排序。例如,我需要得到这样的列表:
ItemName1 $100 SomeDescription
ItemName1 $200 AnotherDescription
ItemName1 $250 AnotherDescription
ItemName2 $20 AnotherDescription
ItemName2 $40 Description
ItemName3 $100 Description
等等。因此,主键是名称,但如果有多个项目具有相同的名称,则第二个键是价格。怎么做?
使用 ThenBy
扩展,因为它不会覆盖以前使用的OrderBy
调用。
var sortedList = ObjectCollection.OrderBy(x => x.Name).ThenBy(x => x.Price).ToList();
你需要使用 linq 使用ThenBy()
ObjectCollection.OrderBy(x => x.Name).ThenBy(x => x.Price).ToList();
使用 Enumerable.ThenBy
:
var sortedList = ObjectCollection.OrderBy(x => x.Name).ThenBy(x => x.Description).ToList();
var sortedList = ObjectCollection.OrderBy(x => x.Name).ThenBy(x => x.SecondPropertyToOrderBy).ToList();
您可以像这样链接 OrderBy 或 OrderByDescending。我希望这有帮助
您可以使用 Linq:
ObjectCollection.OrderBy(x => x.Name).
ThenBy(x => x.Price).ToList();
如果不能使用 Linq,可以编写自定义比较器。