我有以下LINQ查詢火災和異常時FirstOrDefault()
返回null。理想情況下,我想避免空檢查。有沒有辦法做到這一點?如果沒有滿足FirstOrDefault()
呼叫的CPOffsets
,我希望返回0
。LINQ - FirstOrDefault(),然後選擇()
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()
,但我認爲在這裏可能適用?
這實際上是關於簡明扼要,你會得到......大部分時間「足夠好」是不夠好:-) – theMayer 2013-03-20 23:47:26
我同意。如果你想要它更簡潔,你可能不得不推出你自己的方法或擴展方法。 (這並不一定是壞事)編輯:沒有錯'雙偏置= DetermineOffset(OrderedOffsets,cpTime);'或'雙偏置= OrderedOffsets.DetermineOffset(cpTime)'或'雙偏置= OrderedOffsets.DetermineOffset(O = > o.OffsetDateTime> cpTime);'如果你想對謂詞有更多的控制權。 – 2013-03-20 23:48:23
檢查了這一點:HTTP://stackoverflow.com/questions/14791514/streamlined-way-to-do-c-sharp-run-time-type-identification-that-avoids-a-null-ch/14791613#14791613 – 2013-03-20 23:53:41