按排序顺序排序,大于0

Har*_*oon 4 linq c#-3.0

我试图对一堆具有排序顺序的对象进行排序,但是有些字段已初始化为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的用户,然后是排序顺序的用户

Mar*_*ers 8

要么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)