我有一个包含可为空的NodaTime.OffsetDateTime属性的类约会。如果我有一个约会列表,我如何使用Linq OrderBy对这个列表进行排序,首先是空的StartDateTime,然后是降序的StartDateTime?
Class Appointment
{
public OffsetDateTime? StartDateTime { get; set; }
}我试过这么做
var orderedAppointments = myAppointmentsList
.OrderByDescending(x => x.StartDateTime is null)
.ThenByDescending(x => x.StartDateTime, OffsetDateTime.Comparer.Local)
.ToList();但是我得到了一个错误,因为OffsetDateTime.Comparer不能处理空值。
我可以做这样的事情
var orderedAppointments = myAppointmentsList
.OrderByDescending(x => x.StartDateTime ?? StartDateTime.MaxValue, OffsetDateTime.Comparer.Local)
.ToList();但是StartDateTime没有MaxValue。
这里的建议是什么,创建我自己的OffsetDateTime最大值,或者有没有更好的方法来实现这一点,我没有?
发布于 2021-05-19 18:29:39
所以你想先得到空值?然后你可以使用:
var orderedAppointments = myAppointmentsList
.OrderBy(x => x.StartDateTime.HasValue ? 1 : 0)
.ThenByDescending(x => x.StartDateTime.GetValueOrDefault(), OffsetDateTime.Comparer.Local)
.ToList();https://stackoverflow.com/questions/67601410
复制相似问题