首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >订购NodaTime可为空的OffsetDateTime

订购NodaTime可为空的OffsetDateTime
EN

Stack Overflow用户
提问于 2021-05-19 18:23:30
回答 1查看 49关注 0票数 0

我有一个包含可为空的NodaTime.OffsetDateTime属性的类约会。如果我有一个约会列表,我如何使用Linq OrderBy对这个列表进行排序,首先是空的StartDateTime,然后是降序的StartDateTime?

代码语言:javascript
复制
Class Appointment
{
    public OffsetDateTime? StartDateTime { get; set; }
}

我试过这么做

代码语言:javascript
复制
var orderedAppointments = myAppointmentsList
    .OrderByDescending(x => x.StartDateTime is null)
    .ThenByDescending(x => x.StartDateTime, OffsetDateTime.Comparer.Local)
    .ToList();

但是我得到了一个错误,因为OffsetDateTime.Comparer不能处理空值。

我可以做这样的事情

代码语言:javascript
复制
var orderedAppointments = myAppointmentsList
    .OrderByDescending(x => x.StartDateTime ?? StartDateTime.MaxValue, OffsetDateTime.Comparer.Local)
    .ToList();

但是StartDateTime没有MaxValue

这里的建议是什么,创建我自己的OffsetDateTime最大值,或者有没有更好的方法来实现这一点,我没有?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-19 18:29:39

所以你想先得到空值?然后你可以使用:

代码语言:javascript
复制
var orderedAppointments = myAppointmentsList
    .OrderBy(x => x.StartDateTime.HasValue ? 1 : 0)
    .ThenByDescending(x => x.StartDateTime.GetValueOrDefault(), OffsetDateTime.Comparer.Local)
    .ToList();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67601410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档