Вы можете просто использовать свойство Year
в DateTime
:
var active = from p in dc.People
where p.Exam.Year >= 2010
select new {
p.ContactID,
p.FirstName,
p.LastName
};
Почему. Значение необходимо для доступа .Year?Экзамен обнуляемая дата и время.
Именно потому, что Exam
- это Nullable<DateTime>
.Когда вы объявляете экземпляр Nullable<DateTime>
, например
DateTime? exam;
, обратите внимание, что exam
не является DateTime
, и поэтому вы не можете напрямую получить доступ к свойствам DateTime
.Чтобы получить конкретный экземпляр DateTime
, вы используете свойство Value
для Nullable<DateTime>
(все Nullable<T>
s имеют это свойство), так что
DateTime instance = exam.Value;
- это DateTime
при условии, что exam
не null
.Следовательно, вы можете сказать
int year = instance.Year;
и, конечно, для краткости
int year = exam.Value.Year;
Обратите внимание, что это будет выбрасываться, если exam.HasValue
ложно.