为什么在申请时没有返回null值!=在linq中

时间:2013-05-15 18:34:41

标签: c# asp.net linq entity-framework

我使用此代码

var items2 = from item in context.Images
             where item.Reported != true
             select item;

但是在“报告”列中没有返回空值为什么?

3 个答案:

答案 0 :(得分:8)

truefalsenull的值不同。如果您需要返回两者,那么您需要将查询更改为:

var items2 = from item in context.Images
             where item.Reported != true || item.Reported == null
             select item;

答案 1 :(得分:7)

实体框架在将查询转换为SQL时,会生成类似于

的代码
select * from images
where reported <> true

在null值上使用的SQL中的任何运算符都返回false(null <> true),这就是为什么你没有在结果集中获得报告空值的图像。

答案 2 :(得分:1)

您可以尝试使用Object.Equals获得预期的效果,例如:

var items2 = from item in context.Images
    where !Equals(item.Reported, true)
    select item;

它应该像您所描述的那样工作,返回falsenull条目。