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

C#按多条件排序货运记录列表技术求助

多条件货运记录排序解决方案

核心逻辑拆解

你的排序规则需要分场景处理,不能直接用OrderBy+ThenBy的简单组合,关键是给逾期记录和未逾期记录设置不同的排序优先级:

  • 第一步:所有记录先按ExpectedShipmentDate升序排列
  • 第二步:仅对已逾期(ExpectedShipmentDate < 当前时间)的记录,按NeedsToBePunctual降序(true在前,false在后);未逾期记录忽略该字段,保持第一步的日期排序

代码实现示例(C# LINQ)

假设你用的是.NET环境,可通过构造自定义排序键实现:

var currentTime = DateTime.Now;
var sortedShipments = shipments
    .OrderBy(s => s.ExpectedShipmentDate) // 优先按发货日期升序
    .ThenBy(s => 
        // 逾期记录:需要准时的排前面(给0),不需要的排后面(给1)
        s.ExpectedShipmentDate < currentTime 
            ? s.NeedsToBePunctual ? 0 : 1 
            : 2); // 未逾期记录统一给2,确保不会打乱日期排序

为什么之前的方法失效?

如果直接用OrderBy(s => s.ExpectedShipmentDate).ThenBy(s => s.NeedsToBePunctual),会导致未逾期记录也按NeedsToBePunctual排序,违背了规则3的要求。上面的写法通过给未逾期记录分配相同的排序键值,让它们保持第一步的日期顺序,同时只在逾期组内区分优先级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 08:02:33