Использование: Entity Framework 4.3.1, MVC 4нуль против по умолчанию установлен в нуль - дает разные результаты
записей базы данных Sample (например):
Id Height 1 null 2 2.1
Почему этот первый отчет возвращает нулевые результаты:
decimal? scannedItemHeight = default(decimal?);
(from st in Stocks
where st.Height == scannedItemHeight
select st.Id).ToList();
Но это заявление возвращает запись Id 1:
(from st in Stocks
where st.Height == null
select st.Id).ToList();
Если scannedItemHeight имеет значение NULL, я хочу только совместить значения, где высота тоже нулевая.
Я только хочу, чтобы вернуть первую запись, Id 1.
UPDATE Я закончил с использованием:
st.Height == scannedItemHeight || (scannedItemHeight == null && st.Height == null)
Записывать фактические операторы SQL, которые генерируются и посмотреть, если есть разница. Http: // StackOverflow.com/questions/16880687/how-can-i-log-the-generated-sql-from-dbcontext-savechanges-in-my-program –
У вас на самом деле есть элементы с ненулевой высотой, которые соответствуют другим условиям? В противном случае результаты для обоих методов будут одинаковыми в этом случае (потому что метод Jon возвращает только элементы с Height is null, а мой метод - только все элементы). Очень важно понять различие между этими методами. Поскольку я undestand вам нужно сопоставить элементы с нулевой высотой, если параметр равен нулю, используйте метод Jon. – Evk
@ Evk Doh! Я думаю, что вы правы, я выбрал высоту для примера и не проверял, что для других заданных параметров фильтрации (ширина, длина, калибровка), что все результаты имеют нулевую высоту, позвольте мне повторить проверку и вернуться к вам, но да, это все объяснило бы. –