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

ASP.NET MVC实现已完成任务后置+未完成任务按运行时间排序

ASP.NET MVC任务排序解决方案

核心排序实现

直接通过LINQ组合排序条件,先区分已完成和未完成任务,再对未完成任务按运行时间排序:

// 假设你的任务集合为IEnumerable<JobModel> jobs
var sortedJobs = jobs
    // 已完成任务(IsJobRan返回1)排末尾,布尔排序中false在前、true在后
    .OrderBy(job => job.IsJobRan() == 1)
    // 未完成任务按运行时间升序排列
    .ThenBy(job => job.RunTime);

完整控制器示例

以下是HomeController中应用该排序的示例代码:

public ActionResult Index()
{
    // 模拟任务数据
    var jobs = new List<JobModel>
    {
        new JobModel { JobName = "M2I", RunTime = "0705" },
        new JobModel { JobName = "SDI", RunTime = "0100" },
        new JobModel { JobName = "FGI", RunTime = "1220" }
    };

    // 模拟M2I任务已完成(IsJobRan返回1)
    jobs.First(j => j.JobName == "M2I").MarkAsCompleted();

    // 执行排序
    var sortedJobs = jobs
        .OrderBy(j => j.IsJobRan() == 1)
        .ThenBy(j => j.RunTime);

    return View(sortedJobs);
}

关键说明

  • 利用布尔值排序特性:job.IsJobRan() == 1会返回true(已完成)或false(未完成),排序时false对应的任务会排在true之前,直接实现已完成任务后置的需求。
  • 若RunTime是四位数字格式的字符串(如"0100"),直接按字符串排序即可得到正确的时间顺序,无需额外转换。
  • 无需复杂的Move方法,LINQ排序逻辑简洁直观,易维护且性能更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 07:25:18