让我们考虑一个有 2 列的表:ID (int) 和 Role(string)。两者都可以为空。
现在假设两列中的数据为:
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。