如何可靠地检查可为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的属性是否不包含数据?

如何可靠地检查可为null的属性是否不包含数据?DBNull正在杀死我

您尝试过使用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();