Извините, если раньше об этом спрашивали, но я просмотрел соответствующие вопросы и не смог найти ничего, относящегося к моей ситуации.
У меня есть запрос, который выглядит следующим образом.
var tempFoo = "";
var foo = tempFoo != "" ? tempFoo : null;
var result = Entities.Where(x => x.Bar == foo);
Bar
- это string
и обнуляемый varchar
Проблема заключается в том, что когда foo
равен null
, SQL, генерируемый LINQ to SQL, имеет вид:
([t0].[Bar] = @p0)
где должно быть:
([t0].[Bar] IS NULL)
Если я заменю foo
на null
в выражении LINQ to SQL, используется правильный синтаксис IS NULL
.Однако иногда foo
не равно нулю, поэтому мне приходится использовать переменную.
Так как же я могу заставить LINQ to SQL использовать IS NULL
, когда foo
равен null
и=
, когда foo
не null
?
PS: причина странного присвоения переменной в том, что tempFoo
ссылается на именованный захват регулярных выражений.Если захват пустой, значение ""
, поэтому я должен проверить пустое значение и назначить null
.
Спасибо!