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
相关产品推荐
相关产品推荐

