【发布时间】:2011-01-06 09:48:50
【问题描述】:
我想在多个列上应用 order by 在 LINQ 中一些升序和其他列降序。我该怎么做?
【问题讨论】:
我想在多个列上应用 order by 在 LINQ 中一些升序和其他列降序。我该怎么做?
【问题讨论】:
var sortedCollection =
from item in collection
orderby item.Property1, item.Property2 descending, item.Property3
select item;
【讨论】:
orderby p.Category, p.UnitPrice descending
或作为 Lambda:
products.OrderBy(p => p.Category).ThenByDescending(p => p.UnitPrice);
【讨论】:
Steven 的回答会起作用,但我更喜欢方法链接而不是声明性 LINQ 语法,例如
collection
.OrderBy(e => e.Property1)
.ThenByDescending(e => e.Property2)
.ThenBy(e => e.Property3)
【讨论】:
【讨论】:
为了完整性,并作为此处其他好的答案的替代品...
还有一个需要 IComparer 的重载或 OrderBy,如果这是您想要的常见顺序模式,那么您可能希望创建一个实现它的类并将其传递给 orderby 子句,让它处理更多复杂的排序,这样当您以相同的方式排序查询时,它可以重复使用。
【讨论】: