1.需求:列表中优先排序显示固定值的数据
2.实现,使用order by case when
select *From orders
order by
case when userid='123456'
then 1 else 0 end
desc
3.sqlsugar中如何实现(未验证)
.OrderBy(it=> SqlFunc.IIF(it.id== "1", 1, 0),OrderByType.Desc)
4.其他实现方式:
已生成数据结果中按固定值排序,因为已经生成了数据集,无法再使用case when的sql语法。所以可以这样:
4.1使用新字段
List<int> a=new List<int>(){2,3,4,5,6,1};
var c=a.Select(i=>new {i,order=i%2==0?1:0}).OrderByDescending(i=>i.order);
foreach(var item in c)
{
System.Console.WriteLine(item);
}
结果:
4.2使用Linq的orderby
List<int> a=new List<int>(){2,3,4,5,6,1};
var b=a.OrderByDescending(i=>i%2==0?1:0);
foreach(var item in b)
{
System.Console.WriteLine(item);
}
结果:
另:group by case when 的用途