有人可以告诉我 DBNull 的正确使用方法吗?我正在开发一个 MVC3 项目,该项目在 Controller 中具有此查询。
我有一个 linq 查询,它返回一个我知道在第一个周期没有值的字段:
var qryGetBirthdate = (from c in db.Customer
select new
{
c.Birthdate
}
).FirstOrDefault();
在数据库中,Birthdate 是 Datetime 类型,为 null。
我为此所做的检查是错误的:
if ( !DBNull.Value.Equals(qryGetBirthdate.Birthdate))
{
DateTime? dob = qryGetBirthdate.Birthdate;
}
我尝试过其他博客的变体,但找不到答案。基本上我想要的是捕获“qryGetBirthdate.Birthdate”尚不存在的事实。我得到的只是该对象未设置为我知道的引用的异常。
我做错了什么?
最佳答案
如果序列为空,
FirstOrDefault
将返回引用类型的 null
。这就是 qryGetBirthdate.Birthdate
处出现 NullRefernceException
的原因。因此检查它是否为空:
if(qryGetBirthdate != null)
{
// now you can access it safely
}
但是,您不需要创建匿名类型。
DateTime? firstBirthdate = (from c in db.Customer
select c.Birthdate).FirstOrDefault();
关于c# - 正确使用DBNull,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18644868/