如何使用可空列指定where子句

时间:2015-07-18 19:03:53

标签: c# linq entity-framework linq-to-sql

我有一个像打击一样的样本表。

[id] [姓名] [DeleteFlg]
1 Apple NULL
2柠檬真实 3葡萄假

我想在Linq中选择下面的SQL。

$render

但是,这不会返回任何内容(ret.Count = 0)。

$modelValue

如何使用DeleteFlg选择柠檬除外?

2 个答案:

答案 0 :(得分:1)

您可能缺少空检查(当您使用EF时看到)。

where !f.DeleteFlg.HasValue || !f.DeleteFlg.Value

应选择DeleteFlg为NULL或DeleteFlg等于false的条目。

答案 1 :(得分:0)

您的查询返回一行,其中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表达式返回列表中的一个项目。