可空位域真假检测
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
}
如果你想把 false
和 null
和 "NOT TRUE" 一样对待,那么你可以使用 GetValueOrDefault
propertry
bool? nullableBool = false;
或bool? nullableBool = false;
这两种情况中的任何一种,都会满足这个if
条件。
if (!nullableBool.GetValueOrDefault(false))
{
}
您可以在代码中使用这些逻辑。
如果我有一个可空位域(命名为'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
}
如果你想把 false
和 null
和 "NOT TRUE" 一样对待,那么你可以使用 GetValueOrDefault
propertry
bool? nullableBool = false;
或bool? nullableBool = false;
这两种情况中的任何一种,都会满足这个if
条件。
if (!nullableBool.GetValueOrDefault(false))
{
}
您可以在代码中使用这些逻辑。