我有一个Person Class,它有一个Jobs列表
public class Person
{
public List<Job> Jobs;
}
public class Job
{
public string Name;
public DateTime StartDate;
public DateTime? EndDate;
}
我想在Person类上创建一个名为 CurrentOrLastJob()的方法
DateTime上的正确&#34; OrderByDescending()方法是什么?键入以使空项首先显示(默认情况下,它似乎显示在最后)
public Job CurrentOrLastJob()
{
var lastJob = Jobs.OrderByDescending(r=>r.EndDate).FirstorDefault();
return lastJob;
}
答案 0 :(得分:3)
我会使用null coalescing运算符为日期提供一个默认值,为您提供所需的值。
Jobs.OrderByDescending(r => r.EndDate ?? DateTime.MaxValue)
这会将任何空值视为最大日期/时间值,因此当按降序排序时,它将首先出现。
答案 1 :(得分:1)
我会分两步完成 - 首先是EndDate
是否有值(将作业没有结束日期放在首位),然后是EndDate
值本身。
Jobs.OrderBy(j => j.EndDate.HasValue ? 1 : 0)
.ThenByDescending(j => j.EndDate)
.FirstOrDefault();
这样,您无需担心订购时null
,true
和false
值会下降的位置。