use*_*969 4 c# linq-to-objects
我需要重新排序一个集合最后的结果应该是集合中propertyOne> 0和PropertyTwo = 0的所有项应该是第一个,然后其他项应该遵循
我做了以下但我不确定为什么它不起作用!
IOrderedEnumerable<OrderLineItem> orderedItemList=
OrderList.Cast<OrderLineItem>()
.OrderBy(x => x.PropertyOne > 0)
.ThenBy(x => x.PropertyTwo == 0);
Run Code Online (Sandbox Code Playgroud)
有什么建议?
Fré*_*idi 10
您通过比较lambda返回的内容(即布尔值)来命令您的集合.true 大于 false.因此,您需要使用OrderByDescending():
var orderedItems
= OrderList.Cast<OrderLineItem>()
.OrderByDescending(x => x.PropertyOne > 0)
.ThenByDescending(x => x.PropertyTwo == 0);
Run Code Online (Sandbox Code Playgroud)
或者反转你的谓词:
var orderedItems
= OrderList.Cast<OrderLineItem>()
.OrderBy(x => x.PropertyOne <= 0)
.ThenBy(x => x.PropertyTwo != 0);
Run Code Online (Sandbox Code Playgroud)