2014-10-02 27 views
-2

我认为应该很容易验证,但是我没有自己想象它。验证DBNULL抛出“操作符不能应用于int类型和系统dbnull的操作数”

我想验证如果该值具有的DBNull或不使用

If((objAssessCircleRows[0].ClassValue) != System.DBNull.Value) 
{ 
//do something 

} 

但抱怨“运营商不能应用到int类型和系统的DBNull操作数”。请有人指导我验证DBNULL值的正确方法

objAssessCircleRows[0]DataRow

+1

如果'ClassValue'是一个Int,它将永远不会是DBNull。永远。 – 2014-10-02 21:09:56

+1

这里我们确实没有足够的上下文。什么是填充'objAssessCircleRows [0]'?如果'ClassValue'是一个'int'属性,你是如何期望它具有'DBNull.Value'的值?你很可能想把它变成一个'int?'属性,但是你会比较'null',而不是'DBNull.Value'。 – 2014-10-02 21:13:05

+0

objAssessCircleRows的类型是什么?什么是ClassValue的类型? – tdbeckett 2014-10-02 21:15:15

回答

1

如果ClassValueInt32,它会永远有这两种类型之间没有变换等于DBNull.Value。我猜你在尝试拨打获得者.ClassValue时遇到了异常。

您需要先使用IsNull(string)方法进行检查。喜欢的东西:

if(objAssessCircleRows[0].IsNull("ClassValue")) // Column name from DataSet 
{ 
    //do something 
} 

此外,如果这是使用类型数据集产生的,应该还可以生成匹配ISNULL方法来检查空值:

if(objAssessCircleRows[0].IsClassValueNull()) 
{ 
    //do something 
} 
+0

+1对于我来说更重要的解释,为什么我得到这个例外,再次感谢。 – Usher 2014-10-02 21:52:56

相关问题