例如,我有一个具有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
等等。因此,主键是名称,但如果有多个具有相同名称的项目,则第二个键是价格。怎么做?
答案 0 :(得分:2)
使用ThenBy
扩展名,因为它不会覆盖之前使用过的OrderBy
来电。
var sortedList = ObjectCollection.OrderBy(x => x.Name).ThenBy(x => x.Price).ToList();
答案 1 :(得分:2)
答案 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。