Что FirstOrDefault для DateTime в Linq?
Если у меня есть запрос, который возвращает DateTime
, какое значение FirstOrDefault()
? Есть ли общий способ получить значение по умолчанию для С# скаляра? Пример:
var list = (from item in db.Items
where item.ID==1234
select item.StartDate).FirstOrDefault();
Изменить: Предположим, что столбец StartDate
не может быть нулевым.
Ответы
Ответ 1
Общий способ получения значения по умолчанию для данного типа общего типа:
default(T)
где T
- это типичный параметр типа. Для ссылочных типов это даст null
. Для типов значений это приведет к нулевому экземпляру значения. Для DateTime
s это будет эквивалентно DateTime.MinValue
.
Ответ 2
default(DateTime)
- 1/1/0001 12:00:00 AM.
В вашем коде основная часть вашего запроса - это IEnumerable из дат начала из вашей базы данных. Ваш вызов FirstOrDefault() возвращает либо первый элемент перечислимого, либо значение по умолчанию его типа, если в перечисляемом элементе нет элементов.
Если тип StartDate действительно является датой и в перечислимом элементе нет элементов, то результатом будет приведенное выше значение datetime.
Ответ 3
DateTime.MinValue
Ответ 4
Im, угадывая его default(DateTime)
, который im guessing (снова) DateTime.MinValue
Ответ 5
Это полночь, в начале 1-10001.