Wes*_*ley 13 c# linq generics list
我有一个Offer包含提交类别的类.
我希望特定类别的所有优惠都显示在顶部,其次是所有其他优惠.
我尝试了这个,但无济于事,你会推荐什么?
Offers = Offers.OrderBy(x => x.Category == "Corporate").ToList();
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 28
按布尔值false(0)排序时true(1).要首先获取与谓词匹配的元素,您应该使用OrderByDescending以下内容来反转排序顺序:
Offers = Offers.OrderByDescending(x => x.Category == "Corporate").ToList();
Run Code Online (Sandbox Code Playgroud)
Oli*_*bes 15
的C#语言规范5.0不指定一个字节表示true和false值.因此,最好不要依赖于由... true表示的假设1.此外,布尔表达式排序的结果x.Category == "Corporate"并不明显,true也可以用负值表示.因此,我使用三元运算符显式指定排序值:
Offers = Offers
.OrderBy(x => x.Category == "Corporate" ? 0 : 1)
.ThenBy(x => x.Category)
.ThenBy(x => x.Date) // or what ever
.ToList();
Run Code Online (Sandbox Code Playgroud)