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

如何实现自定义OrderBy/ThenBy排序:按TYPE、NAME排序且CODE=8置后

排序需求实现方案

原代码存在的问题

  • 最高排序优先级设为TYPE,会导致小TYPE的CODE=8记录,排在大TYPE的非8记录前面,违背「所有CODE=8记录必须排在最后」的核心规则。
  • 非8记录之间错误地按CODE数值排序,不符合「非8记录内部先按TYPE、再按NAME排序」的要求。

可行实现代码

将「是否为CODE=8」设为最高排序键,再依次按TYPE、NAME排序即可:

SomeList.OrderBy(c => c.Code == 8)
  .ThenBy(c => c.Type)
  .ThenBy(c => c.Name)
  .ToList();

逻辑说明

  • 布尔值排序时false小于true,因此所有非CODE=8的记录(布尔值为false)会自动排在前半段,CODE=8的记录(布尔值为true)全部排在后半段,实现8值记录后置的要求。
  • 两组内部各自按TYPE升序、同TYPE下按NAME升序排列,匹配你给出的前半段(1 AAA 7、1 EEE 7、4 DDD 5、5 CCC 6)和后半段(1 BBB 8、1 DDD 8)的排序逻辑,期望结果中4 BBB 1为明显输入笔误。

内容的提问来源于stack exchange,提问作者Jane Ortega

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 05:15:05