Мое предложение - НЕ для проецирования DateTime?
на DateTime
перед вызовом Min
.
Вот пример Nullable<int>
, который не проецирует на int
, чтобы показать, как расширения Min
и Max
ведут себя с пустыми и различными списками обнуляемых целых чисел.
var foo = Enumerable.Empty<int?>();
Console.WriteLine(foo.Min());
foo = new int? [] { null, -20, 10 };
Console.WriteLine(foo.Min());
Console.WriteLine(foo.Max());
Вывод выше:
null
-20
10
Вместо фильтрации экземпляров DateTime?
в списке Foos только для тех, у которых есть значения, разрешите расширению Min
работать со значениями DateTime?
вместо проецирования на DateTime
. Если у вас есть пустой список (как в примере выше), вы получите null
значение из Min
вместо InvalidOperationException
.