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

按草稿数、评论数及国家名称排序字典并提取键

实现字典排序并提取键的完整方案

嘿,我来帮你把这个排序逻辑补全并梳理清楚~ 按照你给出的三个排序规则,我们可以用LINQ轻松实现需求,下面是完整的代码和细节说明:

完整代码示例

// 假设你的字典实例是answersDictionary
var sortedCountries = answersDictionary
    // 规则1:按草稿(draft)答案数量降序排列(数量多的在前)
    .OrderByDescending(kv => kv.Value.Count(answer => answer.State == "draft"))
    // 规则2:草稿数量相同时,按评论(comment)答案数量降序排列
    .ThenByDescending(kv => kv.Value.Count(answer => answer.State == "comment"))
    // 规则3:前两个条件都相同时,按国家名称升序排列(字母顺序)
    .ThenBy(kv => kv.Key.Name)
    // 仅提取排序后的字典键(Country对象)
    .Select(kv => kv.Key)
    // 转换成List集合(如果需要IEnumerable可以去掉这一步)
    .ToList();

细节优化说明

  • 排序优先级处理:OrderByDescending作为主排序规则,ThenByDescending和ThenBy是次级规则,只有当前面的排序条件完全相同时才会触发后续规则,完美匹配你的需求顺序。
  • 空值安全防护:如果字典中存在List<Answer>为null的情况,建议给Count判断加上空值保护,避免空引用异常:
    kv.Value?.Count(answer => answer.State == "draft") ?? 0
    
  • 类型严谨性优化:如果Answer.State当前是字符串类型,建议改成枚举类型(比如public enum AnswerState { Final, Draft, Comment }),这样能避免字符串拼写错误,此时判断条件就变成answer.State == AnswerState.Draft。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:42:17