我在SQL Server中的查詢:實體框架ISNULL在條件
SELECT * FROM MyTable t
WHERE ISNULL(t.Status,'') = ''
我怎樣才能做到這一點在實體框架?
編輯: 噢對不起我的代碼是象
WHERE ISNULL(t.Status,'') = ''
我在SQL Server中的查詢:實體框架ISNULL在條件
SELECT * FROM MyTable t
WHERE ISNULL(t.Status,'') = ''
我怎樣才能做到這一點在實體框架?
編輯: 噢對不起我的代碼是象
WHERE ISNULL(t.Status,'') = ''
嘗試類似
MyTable.Where(T =>(t.Status ?? 「」)== 「CO」)
這裏WHERE t.Status ='CO'應該沒問題。爲什麼你需要檢查? (空值) ? –
雖然沒有必要這樣做,但這是OP所要求的。我認爲它不會產生'ISNULL',而是'COALESCE(...)',但這不重要。 – Silvermind
這是爲了防止NULL傳播。在這個例子中,OP可以避開它,但它似乎是更好的練習。 –
雖然問題沒有問題,但邏輯並不健全。 因爲如果一個值等於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是的我明白了,但我錯誤地提出了問題,因爲WHERE ISNULL(t.Status,'')='CO',實際上它是在哪裏ISNULL(t.Status,'')='' –
這仍然是不可糾正的。你應該只使用'WHERE t.Status =''或t.Status IS NULL' –