如何订购()2个或更多参数?

时间:2014-08-08 10:41:19

标签: c#

例如,我有一个具有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

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

5 个答案:

答案 0 :(得分:2)

使用ThenBy扩展名,因为它不会覆盖之前使用过的OrderBy来电。

var sortedList = ObjectCollection.OrderBy(x => x.Name).ThenBy(x => x.Price).ToList();

答案 1 :(得分:2)

您需要使用linq

ThenBy()
ObjectCollection.OrderBy(x => x.Name).ThenBy(x => x.Price).ToList();

答案 2 :(得分:2)

使用Enumerable.ThenBy

var sortedList = ObjectCollection.OrderBy(x => x.Name).ThenBy(x => x.Description).ToList();

答案 3 :(得分:1)

var sortedList = ObjectCollection.OrderBy(x => x.Name).ThenBy(x => x.SecondPropertyToOrderBy).ToList();

您可以像这样链接OrderBy或OrderByDescending。我希望这有帮助

答案 4 :(得分:1)

您可以使用Linq:

ObjectCollection.OrderBy(x => x.Name).
                 ThenBy(x => x.Price).ToList();

如果你不能使用Linq,你可以写一个custom comparator