首页 新闻 会员 周边 捐助

EF Core 如何实现 NULLs last 排序

0
悬赏园豆:50 [已解决问题] 解决于 2022-11-08 14:47

EF Core 如何实现在 OrderBy 时如果值为 null 则排在非 null 值之后?对应的数据库是 SQL Server

dudu的主页 dudu | 高人七级 | 园豆:29618
提问于:2022-11-07 18:49
< >
分享
最佳答案
0
var result = list
    .OrderByDescending(i => i.date.HasValue)
    .ThenBy(i => i.date);

从这里看到的:Using the LINQ OrderBy operator with null values

收获园豆:30
会长 | 专家六级 |园豆:12463 | 2022-11-08 09:34

是的,应该用 OrderByDescending

dudu | 园豆:29618 (高人七级) | 2022-11-08 12:49

生成的 SQL 语句

ORDER BY CASE WHEN [b].[Date] IS NOT NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END DESC, [b].[Date]
dudu | 园豆:29618 (高人七级) | 2022-11-08 13:02
其他回答(1)
0
var result = query
    .OrderBy(i => i.Order == null ? 1 : 0)
    .ThenBy(i => i.Order);
收获园豆:20
Laggage | 园豆:878 (小虾三级) | 2022-11-08 12:08

这样也可以,生成的 SQL 语句更简洁

ORDER BY CASE WHEN [b].[Order] IS NULL THEN 1 ELSE 0 END, [b].[Order]
支持(0) 反对(0) dudu | 园豆:29618 (高人七级) | 2022-11-08 13:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册