如何将null作为第一项排序
本文关键字:一项 排序 null | 更新日期: 2023-09-27 18:17:45
我有一个Person类,它有一个Jobs列表
public class Person
{
public List<Job> Jobs;
}
public class Job
{
public string Name;
public DateTime StartDate;
public DateTime? EndDate;
}
我想在Person类上创建一个名为CurrentOrLastJob()的方法,它将
- 返回一个没有结束日期的作业
- 如果所有作业都有结束日期,则返回最近的结束日期。
什么是正确的" orderbydescent()方法上的日期时间?键入使空项首先显示(默认情况下它似乎最后显示)
public Job CurrentOrLastJob()
{
var lastJob = Jobs.OrderByDescending(r=>r.EndDate).FirstorDefault();
return lastJob;
}
我将使用空合并运算符为日期提供一个默认值,该值可以提供您想要的值。
Jobs.OrderByDescending(r => r.EndDate ?? DateTime.MaxValue)
将任何空值视为最大日期/时间值,因此在降序排序时,它将首先出现。
我将分两步完成-首先是EndDate
是否具有值(首先放置没有结束日期的作业),然后是EndDate
值本身。
Jobs.OrderBy(j => j.EndDate.HasValue ? 1 : 0)
.ThenByDescending(j => j.EndDate)
.FirstOrDefault();
这样,您就不必担心排序时null
, true
和false
的值落在哪里。