如何 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 个或更多参数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何接收 2 个或更多不同的异常?

如何使用 UIPanGestureRecognizer 移动 2 个或更多 UIImageViews

如何测试多个(2个或更多)布尔值是不是为真

如何使用颤动在按钮网格中滑动/拖动 2 个或更多按钮

如何使用 AWS OpsWork 部署 2 个或更多 Rails Web 应用程序?

Django如何添加2个或更多过滤器