Предположим, у вас есть таблица с пустым столбцом varchar. Когда вы пытаетесь отфильтровать таблицу, вы должны использовать (параметр pFilter):
var filter = pFilter;
var dataContext = new DBDataContext();
var result = dataContext.MyTable.Where(x=>x.MyColumn == filter).ToList();
Теперь, что, если есть ключевое слово, которое означает "Все нули". Код будет выглядеть так:
var filter = pFilter != "[Nulls]" ? pFilter : null;
var dataContext = new DBDataContext();
var result = dataContext.MyTable.Where(x=>x.MyColumn == filter).ToList();
Но это не работает. По-видимому, строка со значением NULL является ... не NULL?
Однако, что работает этот код:
var filter = pFilter != "[Nulls]" ? pFilter : null;
var dataContext = new DBDataContext();
var result = dataContext.MyTable.Where(x=>x.MyColumn == filter || (filter == null && x.MyColumn == null)).ToList();
Обходной путь не убедил меня, поэтому мой вопрос таков: как лучше всего обращаться со столбцами строк, допускающих обнуляемость, в LinqToSql?