Оператор lastOrDefault
возвращает последнюю дату, если таблица данных не пуста. В противном случае возвращается значение по умолчанию DateTime , которое равно DateTime.MinValue
.
Поскольку вы не можете изменить это значение по умолчанию, лучше проверить, является ли результат запроса значением по умолчанию, и вернуть его вне запроса:
let lastDate =
let d =
query {
for day in days do
lastOrDefault
}
if d = DateTime.MinValue
then new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)
else d
Однако возвращение Unix Epoch не является F # -тишным способом обработки исключительных случаев. Проще вернуть None
, если в таблице данных нет записи, а также проще обработать это значение option
, чтобы справиться с непредвиденной ситуацией:
let lastDate =
let d =
query {
for day in days do
lastOrDefault
}
if d = DateTime.MinValue then None else Some d
match lastDate with
| None -> (* Process the exceptional case *)
| Some d -> (* Do something with d *)