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

如何通过LINQ实现按特定规则的多属性列表排序?

完善LINQ查询实现自定义优先级排序需求

没问题,我来帮你完善这个LINQ查询,完全贴合你的自定义排序规则!

需求回顾

你需要的排序逻辑是:

  • 第一优先级:包含ab的项,按字母序排序
  • 第二优先级:包含cd的项,按字母序排序
  • 第三优先级:包含ef的项,按字母序排序
  • 最后:剩余项按字母序排序

完善后的LINQ查询

var groups = profileModel.Groups
    // 第一优先级:包含"ab"的项前置
    .OrderByDescending(i => i.FullName.ToLower().Contains("ab"))
    // 第二优先级:在非"ab"项中,包含"cd"的前置
    .ThenByDescending(i => i.FullName.ToLower().Contains("cd"))
    // 第三优先级:在非"ab"/"cd"项中,包含"ef"的前置
    .ThenByDescending(i => i.FullName.ToLower().Contains("ef"))
    // 所有分组内按字母序排序(不区分大小写)
    .ThenBy(i => i.FullName.ToLower());

代码解释

  1. 优先级分组:前三个OrderByDescending/ThenByDescending利用布尔值的排序特性(true对应数值1,false对应0),让符合条件的项自动排在前面,完美实现你的分组优先级。
  2. 组内排序:最后一个ThenBy是核心——它会让所有项在完成优先级分组后,同一组内的项按照字母序排序(使用ToLower()是为了实现不区分大小写的排序,如果你需要严格区分大小写,去掉即可)。

示例效果

假设你的Groups有以下FullName值:
["xyz", "ab123", "cd456", "ef789", "abxyz", "cdef", "ghij"]

排序后的结果会是:
["ab123", "abxyz", "cd456", "cdef", "ef789", "ghij", "xyz"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:00:28