C# 实体框架不返回null
我有点糊涂了。如果我的查询没有返回任何内容,为什么优惠券不是空的?我应该如何检查空值C# 实体框架不返回null,c#,entity-framework,C#,Entity Framework,我有点糊涂了。如果我的查询没有返回任何内容,为什么优惠券不是空的?我应该如何检查空值 Coupon coupon; using (var db = new KupongEntities()) { coupon = (from p in db.Coupon where p.CouponID == 123 select p).SingleOrDefault(); } if (coupon != null) { //test } 如果我的查询没有返
Coupon coupon;
using (var db = new KupongEntities())
{
coupon = (from p in db.Coupon
where p.CouponID == 123
select p).SingleOrDefault();
}
if (coupon != null)
{
//test
}
如果我的查询没有返回任何内容,为什么优惠券不是空的
你的问题有点令人困惑。您的意思是,尽管您认为不应该有结果,但您正在执行该查询并没有得到null
值吗?然后发生了三件事中的一件:
null
是错的优惠券
是一个结构优惠券
将接收优惠券
实例的默认值。结构的默认值是将结构的所有字段设置为默认值的值。在这种情况下,你应该说
if(coupon != default(Coupon)) {
}
但是,还有一个棘手的问题,优惠券
的默认实例可能是数据库中的有效条目。如果我是你,我会重新考虑制作优惠券
我应该如何检查空值
Coupon coupon;
using (var db = new KupongEntities())
{
coupon = (from p in db.Coupon
where p.CouponID == 123
select p).SingleOrDefault();
}
if (coupon != null)
{
//test
}
好吧,如果
优惠券
是一种参考类型,那么您所拥有的正是合适的。如果优惠券
是一个结构,您可以按照我上面所示的方式进行检查。您使用的是SingleOrDefault,因此它将返回优惠券实例,如果在集合中未找到任何内容,则返回null。它将实际返回默认值(优惠券),它“可能”是一个新优惠券,您可以重新定义对象的默认值