我有一個列表Foo's
。在處理Nullable類型時在LinQ中使用.HasValue(),有沒有辦法擺脫「可能的SystemInvalidException」?
Foo
有型DateTime?
的CreateDate
我想要得到的最古老的Foo
。我用直觀的方式嘗試,但我得到了一個可能的System.InvalidOperationException
。
DateTime oldestFoo =
(from f in allFoos where f.CreateDate.HasValue select f.CreateDate.Value).Min();
有什麼我錯過了,或者它只是不可能這樣嗎?
我可以用LinQ這樣做,但我也想學習其他方法。
DateTime oldestFoo = DateTime.MaxValue;
foreach (var foo in allFoos)
{
if (foo.CreateDate.HasValue && oldestFoo > foo.CreateDate)
{
oldestFoo = (DateTime)foo.CreateDate;
}
}
當沒有任何值的結果時,你想要結果是什麼? (一個簡短但完整的程序會在這裏幫助...) – 2012-03-19 15:38:52
如果沒有,最老的可以是DateTime.MaxValue。 – radbyx 2012-03-19 15:40:29
我的觀點是:你如何期望'Min()'知道? – 2012-03-19 15:41:41