如何 OrderBy() 2 个或更多参数? [复制]
Posted
技术标签:
【中文标题】如何 OrderBy() 2 个或更多参数? [复制]【英文标题】:How to OrderBy() 2 or more parameters? [duplicate] 【发布时间】:2014-08-08 10:41:18 【问题描述】:例如,我有一个具有 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
等等。所以,主键是一个名称,但如果有多个同名的项目,那么第二个键是价格。如何做到这一点?
【问题讨论】:
【参考方案1】:使用ThenBy
扩展,因为它不会覆盖以前使用的OrderBy
调用。
var sortedList = ObjectCollection.OrderBy(x => x.Name).ThenBy(x => x.Price).ToList();
【讨论】:
【参考方案2】:您需要使用 linq 使用 ThenBy()
ObjectCollection.OrderBy(x => x.Name).ThenBy(x => x.Price).ToList();
【讨论】:
【参考方案3】:使用Enumerable.ThenBy
:
var sortedList = ObjectCollection.OrderBy(x => x.Name).ThenBy(x => x.Description).ToList();
【讨论】:
【参考方案4】:var sortedList = ObjectCollection.OrderBy(x => x.Name).ThenBy(x => x.SecondPropertyToOrderBy).ToList();
您可以像这样链接 OrderBy 或 OrderByDescending。我希望这会有所帮助
【讨论】:
【参考方案5】:你可以使用 Linq:
ObjectCollection.OrderBy(x => x.Name).
ThenBy(x => x.Price).ToList();
如果你不会使用Linq,你可以写一个custom comparator。
【讨论】:
以上是关于如何 OrderBy() 2 个或更多参数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 UIPanGestureRecognizer 移动 2 个或更多 UIImageViews