我有一个LINQ查询,当FirstOrDefault()
返回null时会引发异常。理想情况下,我希望避免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()
无法编译,但我认为这可能是适当的?
double offset = DetermineOffset(OrderedOffsets, cpTime);
或者double offset = OrderedOffsets.DetermineOffset(cpTime)
或者double offset = OrderedOffsets.DetermineOffset(o => o.OffsetDateTime > cpTime);
都没有问题。 - Chris Sinclair