Я пытаюсь отфильтровать все строки в таблице SQL с определенной датой. Он работает, если столбец не допускает значения NULL, но не работает, если это так.
Это работает для полей даты и времени, не допускающих значения NULL:
ent.MyTable.Where(e => e.MyDate.Day == 12);
Очевидно, это работает не для полей даты и времени, допускающих значение NULL. После некоторого поиска в Интернете я нашел множество «решений» этой проблемы, которые выглядят следующим образом:
ent.MyTable.Where(e => e.MyDate != null && e.MyDate.Day == 12);
К сожалению, у меня это тоже не работает. И понятно, почему, если я рассматриваю это сообщение об ошибке:
'System.Nullable' не содержит определения для 'Day', и не может быть найден метод расширения 'Day', принимающий первый аргумент типа 'System.Nullable' (вам не хватает директивы using или ссылки на сборку?)
Я хочу избежать выборки всех строк SQL с последующей фильтрацией в .NET, поскольку меня интересует только очень небольшое количество строк. Есть ли другой способ, которого я не вижу в данный момент?
ent.MyTable.Where(e => e.MyDate.HasValue && e.Date.Value.Day == 12);
05.08.2016HasValue
и!= null
эквивалентны для типов, допускающих значение NULL. 05.08.2016e.MyDate.Value != null
05.08.2016e.MyDate.Value != null
. должно бытьe.MyDate.HasValue
илиe.MyDate != null
:) 05.08.2016e.MyDate != null
05.08.2016