我在数据库中有一个列,其值为NULL。我正在linq中读取此值以获得结果,但linq不会返回任何结果。 我的linq看起来像
dim result= (from t in <tableName> where i.id=Pid)
Pid作为Nothing传递,我的DB将此id值作为NULL组成,因此这个linq应返回一些结果但不返回。为什么?
答案 0 :(得分:0)
据我所知,无法使用比较运算符测试NULL值,例如SQL中的=, <, or <>
。我们将不得不使用IS NULL and IS NOT NULL
运算符。
您可以使用以下主题语言if statement
执行您想要的操作:
if(pid!=null)
{
dim result= (from t in <tableName> where i.id=Pid)
}
else
{
dim result= (from t in <tableName> where i.id IS NULL)
}
答案 1 :(得分:0)
此查询将使用以下where子句转换为SQL:
WHERE [t1].[Id] = @p1
这里的问题是SQL中的null比较语义返回null,这不是真的,并且行被过滤了。
相反,你想要这个where子句:
WHERE [t1].[Id] is null
您可以使用其他查询获得。
dim result= (from t in <tableName> where i.id Is Nothing)