如何指定带有可为空列的 where 子句
How to specify where clause with nullable column
我有一个样例table像blow。
[id] [名称] [DeleteFlg]
1 苹果 NULL
2 柠檬真
3 葡萄假
而且我想 select 在 Linq 中像下面的 SQL 一样。
select *
from Sample
where DeleteFlg != True
但是,这 returns 什么都没有 (ret.Count = 0)。
var ret = (
from f in db.Sample
where f.DeleteFlg != true
select new { Name = f.Name }
)
除了带 DeleteFlg 的 Lemon,我如何 select?
您可能缺少空检查(因为您正在使用 EF)。
where !f.DeleteFlg.HasValue || !f.DeleteFlg.Value
应该 select 那些 DeleteFlg 为 NULL 或 DeleteFlg 等于 false 的条目。
您的查询 returns 一行 Name='Grape'。
所以,如果你想要具有相同结果的 linq 查询,你需要这个:
var ret = (
from f in db.Sample
where f.DeleteFlg.HasValue && !f.DeleteFlg.Value
select new {Name = f.Name}
).ToList();
或
var ret = db.Sample.Where(f => f.DeleteFlag.HasValue && !f.DeleteFlag.Value).ToList();
这两个 linq 表达式 returns 列表中的一项。
我有一个样例table像blow。
[id] [名称] [DeleteFlg]
1 苹果 NULL
2 柠檬真
3 葡萄假
而且我想 select 在 Linq 中像下面的 SQL 一样。
select *
from Sample
where DeleteFlg != True
但是,这 returns 什么都没有 (ret.Count = 0)。
var ret = (
from f in db.Sample
where f.DeleteFlg != true
select new { Name = f.Name }
)
除了带 DeleteFlg 的 Lemon,我如何 select?
您可能缺少空检查(因为您正在使用 EF)。
where !f.DeleteFlg.HasValue || !f.DeleteFlg.Value
应该 select 那些 DeleteFlg 为 NULL 或 DeleteFlg 等于 false 的条目。
您的查询 returns 一行 Name='Grape'。 所以,如果你想要具有相同结果的 linq 查询,你需要这个:
var ret = (
from f in db.Sample
where f.DeleteFlg.HasValue && !f.DeleteFlg.Value
select new {Name = f.Name}
).ToList();
或
var ret = db.Sample.Where(f => f.DeleteFlag.HasValue && !f.DeleteFlag.Value).ToList();
这两个 linq 表达式 returns 列表中的一项。