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

如何将含Status字段的Contract列表按Active状态前置排序?

解决Contract列表按Status="Active"优先排序的问题

你的当前代码有两个关键问题导致无法实现需求:

  • LINQ的OrderBy方法不会修改原序列,它会返回一个新的排序后的序列,你必须接收这个返回值才能得到排序结果
  • bool类型默认升序排序时,false会排在true前面,所以OrderBy(x => x.Status == "Active")会把非Active的元素排在前面,和你的需求相反

修正后的代码

直接使用OrderByDescending让Status == "Active"为true的元素排在最前面,同时接收排序后的序列:

IEnumerable<Contract> mappedContracts = MapContractsToContracts(contracts);
var sortedContracts = mappedContracts.OrderByDescending(x => x.Status == "Active");
return sortedContracts.ToList();

或者简化成链式调用:

return MapContractsToContracts(contracts)
    .OrderByDescending(x => x.Status == "Active")
    .ToList();

进阶:Active内部再排序

如果需要在活跃合约内部再按其他字段(比如创建时间)排序,可以追加ThenBy/ThenByDescending:

return MapContractsToContracts(contracts)
    .OrderByDescending(x => x.Status == "Active")
    .ThenByDescending(x => x.CreatedDate) // 活跃合约按创建时间倒序排
    .ToList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:57:17