У меня есть массив, загруженный из базы данных, где свойство service_time равно Nullable<DateTime>
:
service_time: Nullable<DateTime>
В F#, как я могу отсортировать этот массив, поместив все элементы с service_time = null первыми в новом массиве?
Array.sortBy (fun t -> t.service_time)
дает: тип «Nullable» не поддерживает ограничение «сравнение».
@ФедорСоикин Да. Тип Nullable<DateTime> не поддерживает ограничение сравнения.
Вы можете воспользоваться тем, что default(DateTime)
равно DateTime.MinValue и отсортировать по service_time.GetValueOrDefault() вот так:
Array.sortBy (fun t -> t.service_time.GetValueOrDefault())
Или, более явно:
Array.sortBy (fun t -> t.service_time.GetValueOrDefault(DateTime.MinValue))
Если вы хотите поместить нули в конец массива, вы можете сделать:
Array.sortBy (fun t -> t.service_time.GetValueOrDefault(DateTime.MaxValue))
Демонстрационная рабочий пример здесь.
Пробовали
Array.sortBy
? Какие-то конкретные проблемы с ним?