2013-10-20 3 views
1
var myRows = myContext.MyTable 
    .Where(v => v.MyColumn == null); 

Это не отображает строки из таблицы, хотя существует много строк, где «MyColumn is null»?LINQ Выбор строк, где значение столбца IS NULL

Мне нужно выбрать строки, где MyColumn содержит null.

Я понимаю, что в T-SQL мне пришлось бы использовать оператор «IS NULL», но как я могу выбрать строки, которые я хочу в Linq?

Я использую Entity Framework 5.0.

Если это должно работать, сообщите мне, поскольку моя ошибка должна быть в другом месте.

Благодаря

+0

Спасибо за отзыв. Казалось бы, проблема состоит в том, чтобы сделать небольшую деталь, которую я считал несущественной. Я на самом деле не сравниваюсь с «нулевым» постоянным значением. Я сравниваю с переменной, которую я установил в null (в моем случае строка или DateTime?). Поэтому я говорю myValue = null; ... (v => v.MyColumn == myValue). Сравнение с null возвращает строки, по сравнению с myValue возвращает 0 строк. –

ответ

1

Да оно должно работать как Edit: Потенциальная вещь, чтобы проверить, есть столбец правильно подметил, как обнуляемые в вашем EDMX? Я предполагаю, что если бы это не могло быть проблемой

2

Одна из распространенных причин, по которым это может не работать, - это сопоставить нулевой номер столбца БД (скажем, MyColumn INTEGER NULL) с полем, не подлежащим обнулению, класса C# (скажем, int MyColumn вместо int? MyColumn).

Убедитесь, что MyColumn имеет тип NULL, чтобы исправить эту проблему: кроме этого, ваше выражение верно, EF правильно переведет его на IS NULL.

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