如何按 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

等等。因此,主键是名称,但如果有多个项目具有相同的名称,则第二个键是价格。怎么做?

如何按 OrderBy() 2 个或更多参数

使用 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,可以编写自定义比较器。