如何可靠地检查可为null的属性是否不包含数据?DBNull正在杀死我
本文关键字:DBNull 数据 包含 是否 检查 何可 属性 null | 更新日期: 2023-09-27 17:49:28
我已经开始使用Rob Conery的Massive。很棒的小"ORM",非常有表演性。但是,我遇到了System的问题。DBNull对我的可为null的字段进行比较。
例如,我想检查一个属性是否与另一个属性(在本例中为长类型(匹配
if (obj.MemberId == otherObj.MemberId) return true;
throws异常:运算符"=="不能应用于"System"类型的操作数。DBNull"answers"long"。在本例中,obj.MemberId为null(更具体地说,DBNull(。
好的,所以我检查它是否是DBNull。价值优先权?像这样:
if (obj.MemberId != DBNull.Value)
return obj.MemberId == otherObj.MemberId;
很酷,至少当obj.MemberId是DBNull时,这是有效的,但当它不是(包含长(时,另一个例外:运算符'!='不能应用于类型为"long"answers"System"的操作数。DBNull'。
DBNull正在扼杀我。如何可靠地检查可为null的属性是否不包含数据?
您尝试过使用is
运算符吗?
if (obj.MemberId is DBNull)
{
// it is null
return false;
}
else
{
// has some value
return obj.MemberId == otherObj.MemberId;
}
只需使用Convert.IsDBNull
即可。
http://msdn.microsoft.com/en-us/library/system.convert.isdbnull(v=VS.90(.aspx
if (!DBNull.Value.Equals(obj.MemberID) && obj.MemberID !=null && obj !=null)
或
if (!DBNull.Value.Equals(obj) && obj.MemberID !=null && obj !=null)
选择适用于您的案例的内容。这将给你一个完整的证明检查。
试试这个。这对我有效;
string test = DBNull.Value.Equals(obj.Qty) ? string.Empty : obj.Qty.ToString();