我试图对一堆具有排序顺序的对象进行排序,但是有些字段已初始化为0,所以我想首先显示所有具有排序顺序的用户/对象(按照实际的正确顺序),然后显示其他字段,例如
我的列表
{id:4,name:"Tom", sortoder:0}
{id:14,name:"Bee", sortoder:0}
{id:401,name:"Mike", sortoder:1}
{id:13582,name:"Monty", sortoder:2}
{id:55,name:"Charlie", sortoder:0}
{id:9,name:"Khan", sortoder:9}
var fields = GetFields(myobject) //get fields (not really relevant)
.OrderBy(x => x.sortoder > 0) //this is where I am stuck on
.ToList();
Run Code Online (Sandbox Code Playgroud)
我的列表都是在顶部排名为0的用户,然后是排序顺序的用户
要么ThenBy在第一个之后使用第二个排序:
var fields = GetFields(myobject)
.OrderByDescending(x => x.SortOrder > 0)
.ThenBy(x => x.SortOrder)
.ToList();
Run Code Online (Sandbox Code Playgroud)
或者您可以使用条件表达式将值0替换为int.MaxValue(假设int.MaxValue不作为合法的SortOrder出现):
var fields = GetFields(myobject)
.OrderBy(x => x.SortOrder == 0 ? int.MaxValue : x.SortOrder)
.ToList();
Run Code Online (Sandbox Code Playgroud)