可空位域真假检测

Nullable Bit field true or false detection

如果我有一个可空位域(命名为'Disabled'),数据如下:

ID | Name | Disabled
--------------------
1  | Mine | null
2  | Yours| 1

如果我随后执行以下 Linq To Entities 语句,则不会 returned 任何值:

from r in Rates
where r.Disabled != true
select r

但是如果我执行这个 Linq To Entities 语句:

from r in Rates
where r.Disabled == true
select r

它return是 ID 为 2 的预期行。

我想要第一个语句 return 第 1 行,其中 'Disabled' 字段的值为空。

我是不是漏掉了什么技巧?为什么第一个语句不是 return 空值行?

编辑 让我重新表述一下这个问题...为什么不 return 处理空行?我知道我可以进行简单的空检查。

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

如您所说,您有可为空的布尔值。您可以通过 HasValue.

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

如果你想把 falsenull 和 "NOT TRUE" 一样对待,那么你可以使用 GetValueOrDefault propertry

bool? nullableBool = false;

bool? nullableBool = false;

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

if (!nullableBool.GetValueOrDefault(false))
    {

    }

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