2010-04-23 3 views
12

Если у меня есть запрос, который возвращает DateTime, каково значение FirstOrDefault()? Есть ли общий способ получить значение по умолчанию значения скаляра C#? Пример:Что такое FirstOrDefault для DateTime в Linq?

var list = (from item in db.Items 
    where item.ID==1234 
    select item.StartDate).FirstOrDefault(); 

Edit: Предположим, что столбец StartDate не может быть пустым.

ответ

35

Общий способ получить значение по умолчанию для данного общего типа:

default(T) 

где T является родовым параметром типа. Для ссылочных типов это даст null. Для типов значений это приведет к нулевому экземпляру значения. Для DateTime s это будет эквивалентно DateTime.MinValue.

+6

Как Замечание, вы всегда можете "сила" другое по умолчанию с помощью:. 'Collection.DefaultIfEmpty (новый DateTime (...)) Во-первых(); ' –

2

Im угадывая его default(DateTime), которые им угадать (опять же) является DateTime.MinValue

3

default(DateTime) является 1/1/0001 12:00:00 AM.

В вашем коде основная часть вашего запроса - это IEnumerable из дат начала из вашей базы данных. Ваш вызов FirstOrDefault() возвращает либо первый элемент перечислимого, либо значение по умолчанию его типа, если в перечисляемом элементе нет элементов.

Если тип StartDate действительно является датой, и в перечислимых элементах нет элементов, то результатом будет приведенное выше значение datetime.

1

Это полночь, в начале 1-1-0001.

Смежные вопросы