加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何可靠地检查可空属性是否包含数据? DBNull正在杀了我

发布时间:2020-12-16 01:43:00 所属栏目:百科 来源:网络整理
导读:我已经开始使用Rob Conery的Massive了.令人敬畏的
我已经开始使用Rob Conery的Massive了.令人敬畏的小“ORM”,非常高效.但是,我在可空字段上遇到System.DBNull比较问题.

例如,我想检查属性是否与另一个属性匹配(在此示例中为long类型)

if (obj.MemberId == otherObj.MemberId) return true;

抛出异常:运算符’==’不能应用于’System.DBNull’和’long’类型的操作数.在这种情况下,obj.MemberId为null(更具体地说,DBNull).

好的,所以我先检查一下它的DBNull.Value是否正确?像这样:

if (obj.MemberId != DBNull.Value)
    return obj.MemberId == otherObj.MemberId;

酷,这是有效的,至少在obj.MemberId是DBNull时,但是当它不是(包含一个long)时,另一个例外:运算符’!=’不能应用于’long’和’System.DBNull’类型的操作数.

DBNull正在杀了我.如何可靠地检查可空属性是否不包含数据?

解决方法

您是否尝试使用is运算符?

if (obj.MemberId is DBNull)
{
    // it is null
    return false;
}
else
{
    // has some value
    return obj.MemberId == otherObj.MemberId;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读