You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C# Linq排序时将SortOrder为null的实体置于末尾

解决Linq排序时SortOrder为null的项排在末尾的问题

你可以通过以下两种方式实现需求:

方法一:先按是否为null分组排序,再按SortOrder值排序

利用OrderBy先判断SortOrder是否为null,布尔值排序时false(对应非null项)会排在true(对应null项)前面,再通过ThenBy对非null的SortOrder进行数值排序:

myList.Select(Map)
      .OrderBy(a => a.SortOrder == null)
      .ThenBy(a => a.SortOrder)
      .ToList();

方法二:将null替换为极大值排序

如果SortOrder是数值类型(如int?),可以用空合并运算符??把null替换成一个远大于业务中可能出现的数值,这样null项会自然排在末尾:

myList.Select(Map)
      .OrderBy(a => a.SortOrder ?? int.MaxValue)
      .ToList();

注意:如果业务中SortOrder可能出现int.MaxValue,则不建议使用此方法,避免和正常数据混淆。

内容的提问来源于stack exchange,提问作者Alireza Ahmadi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 21:44:50