【发布时间】:2012-03-15 04:14:31
【问题描述】:
我在实体框架的数据上下文中选择数据时遇到问题,我已将其范围缩小到查询空值。我有这样的方法:
public void DoStuff(int? someInt)
{
var someData = dataContext.MyEntities.Where(x => x.SomeProperty == someInt);
// someData always yields no results if someInt is null, even though
// there are rows in the table that have null for that column.
}
如果someInt 为空,上述方法将失败。但这行有效:
var someData = dataContext.MyEntities.Where(x => x.SomeProperty == null);
为什么我在第二个中得到数据而不是第一个?
【问题讨论】:
-
试试
someInt.Value。可空类型实际上不是空的,但它的值是。 -
@MystereMan 我刚刚测试了这个。请参阅 Ryan Bennett 对答案的评论。不过这是个好主意。
-
@MystereMan 在语义上,它 is null - 说“它的值是”是不正确的:一个空的 nullable-T 没有 一个值,所以思考这个不存在的值的本质是没有意义的
-
@MarcGravell - 我不确定你所说的“一个空的可为空的-T”是什么意思。如果你引用一个 nullable-t 的 .Value,但它没有,它返回 null。
-
@MystereMan 否,因为
int?的.Value的类型为int,不能为空。
标签: c# linq entity-framework entity-framework-4 linq-to-entities