Nullable位字段的真或假检测

本文关键字:检测 字段 Nullable | 更新日期: 2023-09-27 18:18:18

如果我有一个可空位字段(名为'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。

我错过了一个技巧吗?为什么第一个语句不返回空值行?

编辑让我重新表述这个问题…为什么不返回空行?我知道我可以输入一个简单的空检查

Nullable位字段的真或假检测

from r in Rates
where r.Disabled != true
   || r.Disabled IS NULL
select r

正如您所说,您有一个可空bool。您可以通过HasValue检查null

bool? nullableBool = null;
if (nullableBool.HasValue == false)
    {
      //Null
    }

如果您想将falsenull视为"NOT TRUE",那么您可以使用GetValueOrDefault属性

bool? nullableBool = false;

bool? nullableBool = false;

在这两种情况中的任何一种情况下,都满足if条件。

if (!nullableBool.GetValueOrDefault(false))
    {
    }

您可以在代码中使用这些逻辑