如果我有一个可空的位字段(名为'Disabled'),数据如下:
ID | Name | Disabled
--------------------
1 | Mine | null
2 | Yours| 1
如果我然后执行以下Linq To Entities语句,则不返回任何值:
from r in Rates
where r.Disabled != true
select r
但是如果我执行这个Linq To Entities声明:
from r in Rates
where r.Disabled == true
select r
返回ID为2的预期一行。
我希望第一个语句返回第1行,其中'Disabled'字段的值为null。
我在这里错过了一招吗?为什么第一个语句不返回空值行?
编辑让我重新解释一下这个问题......为什么不返回空行?我知道我可以进行简单的空检查。
答案 0 :(得分:2)
from r in Rates
where r.Disabled != true
|| r.Disabled IS NULL
select r
答案 1 :(得分:1)
正如你所说,你有可空的布尔。您可以HasValue
检查null。
bool? nullableBool = null;
if (nullableBool.HasValue == false)
{
//Null
}
如果您想将false
和null
视为“非正确”,那么您可以使用GetValueOrDefault
属性
bool? nullableBool = false;
或bool? nullableBool = false;
在这两种情况中的任何一种情况下,此if
条件都会满足。
if (!nullableBool.GetValueOrDefault(false))
{
}
您可以在代码中使用这些逻辑。