一、Sql中 null字段的排序处理
null字段当做最小值,或者0,参与排序
案例:
sql:
create table NumOne(
ID int identity(1,1),
Num int null,
primary key(ID)
);
go
insert NumOne values(1);
insert NumOne values(10);
insert NumOne values(5);
insert NumOne values(3);
insert NumOne values(null);
insert NumOne values(null);
正序排列
select * from NumOne
order by Num;
处理null排列
---null 列排序问题整理
---原理,执行两次排序
select * from NumOne
order by case when Num is null then 1 else 0 end asc,Num asc
二、EF 中处理方式
原理同上
CourseDataContext _context = new CourseDataContext();
//var list = _context.NumOne.OrderBy(q => q.Num).ToList();
//先判断是否为0,排序,然后根据字段后续排
var list = _context.NumOne
.OrderBy(q => q.Num == null)
.ThenBy(q => q.Num)
.ToList();
foreach (var item in list)
{
Console.WriteLine($"id:{item.ID},num:{item.Num}");
}
更多: