我想在多个列上应用order by升序,而其他列在LINQ中按降序排列。我怎么能这样做?
答案 0 :(得分:30)
var sortedCollection =
from item in collection
orderby item.Property1, item.Property2 descending, item.Property3
select item;
答案 1 :(得分:25)
orderby p.Category, p.UnitPrice descending
或作为Lambda:
products.OrderBy(p => p.Category).ThenByDescending(p => p.UnitPrice);
答案 2 :(得分:6)
史蒂文的答案可行,但我更喜欢方法链接到声明性LINQ语法,例如
collection
.OrderBy(e => e.Property1)
.ThenByDescending(e => e.Property2)
.ThenBy(e => e.Property3)
答案 3 :(得分:1)
答案 4 :(得分:0)
为了完整性,可以替代其他好的答案......
还有一个带有IComparer的重载或OrderBy,如果这是你想要的常见顺序模式,那么你可能想要创建一个包含它并将它传递给orderby子句的类,让它处理更多复杂的排序,这样当你以同样的方式订购查询时它就可以重复使用。