c# - LINQ - FirstOrDefault() 然后 Select()

标签 c# linq

我有以下 LINQ 查询,它在 FirstOrDefault() 返回 null 时触发异常。理想情况下,我想避免空检查。有没有办法做到这一点?如果没有满足 FirstOrDefault() 调用的 CPOffsets,我希望返回 0

double offset = OrderedOffsets.FirstOrDefault(o => o.OffsetDateTime > cpTime).CPOffset;

我能看到实现此目的的唯一方法如下:

CPOffset cpOffset = OrderedOffsets.FirstOrDefault(o => o.OffsetDateTime > cpTime);
double offset = cpOffset != null ? cpOffset.CPOffset : 0;

还有其他更简洁的方法吗?在 FirstOrDefault() 之后使用 Select() 无法编译,但我认为这里可能合适?

最佳答案

我认为这应该可行,我不在 VS 附近查看...

OrderedOffsets.Where(o => o.OffsetDateTime > cpTime).Select(x => x.CPOffset).FirstOrDefault();

关于c# - LINQ - FirstOrDefault() 然后 Select(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15536830/

相关文章:

C# 序列化失败 - 解决方法?

c# - 如何在 C# MVC 中接收 JSON 主体(无 ajax)

Linq 延迟执行

C# 使用 LINQ 对字符数组列表进行排序

c# - 使用 Linq 替换集合项

c# - 如何在 NHibernate 中创建父级并同时向其添加子级?

C# - 按行拆分字符串?

c# - 由非托管应用托管的托管组件中的 Await 和 SynchronizationContext

c# - 使用Web Api服务进行多次调用

c# - 从可为空的日期时间获取日期?