讓我們考慮一個包含2列的表:ID(int)和Role(字符串)。兩者都是可空的。當where子句與NULL值比較時,LINQ-to-SQL查詢不返回行
現在假設兩列中的數據是:
ID Role
-- ----
1 NULL
2 Admin
查詢看起來是這樣的:
List<types> t1 = (
from a in datacontext.RoleTable
where a.Role != "Admin"
select a
).ToList();
我想上面的查詢應該返回表的第一條記錄爲其Role列不等於'Admin',但查詢返回一個空列表。
現在,當我使用這個查詢:
List<types> t2 = (
from a in datacontext.RoleType
where a.Role != "Admin" && a.Role == DBNull.Value.ToString()
select a
).ToList();
我得到正確的答案。
有誰能告訴我爲什麼第一個查詢不起作用請。
僅供參考:如果表中第一行的角色列更改爲User
而不是NULL
,則第一個查詢正常工作。
我正在使用SQL Express和LINQ to SQL。
你試過'.Equals()'? –
沒有那不是我想知道爲什麼第一個查詢不按預期行事。 –