Хотя вопрос в порядке, логика не звучит. Потому что, если значение равно CO
, оно никогда не может быть равно NULL
или ''
. В этом случае вы можете просто легко назвать это так:
SQL:
SELECT * FROM MyTable t
WHERE t.Status = 'CO'
Linq:
var items = (from t in db.MyTable
where t.Status == "CO"
select t);
Однако, если бы это нужно иметь значение по умолчанию, когда NULL
и сравнить к этому значению это будет иметь больший смысл (см. пример):
SQL:
SELECT * FROM MyTable t
WHERE ISNULL(t.Status, 'CO') = 'CO'
Linq:
var items = (from t in db.MyTable
where (t.Status ?? "CO") == "CO"
select t);
Это даст вам все пункты, где t.Status является NULL
или равна CO
. Это, конечно, просто пример.
Примечание: Сгенерированный sql, вероятно, будет немного отличаться, но результат будет таким же. Это могло бы выглядеть примерно так:
SELECT * FROM MyTable t
WHERE COALESCE(t.Status, 'CO') = 'CO'
Вам просто нужно 'WHERE t.Status = 'CO''. 'ISNULL' не влияет на семантику и делает ее непригодной. –
@MartinSmith Да, я понимаю это, но я ошибочно представил вопрос как ГДЕ ISNULL (t.Status, '') = 'CO', на самом деле это было ГДЕ ISNULL (t.Status, '') = '' –
Это все еще невозможно. Вы должны просто использовать 'WHERE t.Status = '' ИЛИ t.Status IS NULL' –