我正在尝试将行esmcost
的值与表wsmtbl
psmcost
进行比较esmcost
但成本值null
,因此我收到以下错误:
运算符"<>"未定义为类型"DBNull"和类型"DBNull">
有没有办法将空值更改为零?
这是 C# 代码
ds.Tables["wsmtbl"].Rows[0]["esmcost"] <> ds.Tables["wsmtbl"].Rows[0]["psmcost"]
尝试以下操作。
Decimal esmcost;
if (ds.Tables["wsmtbl"].Rows[0]["esmcost"] == DBNull.Value)
esmcost = 0.00;
else
esmcost = Convert.ToDecimal(ds.Tables["wsmtbl"].Rows[0]["esmcost"]);
Decimal psmcost;
if (ds.Tables["wsmtbl"].Rows[0]["psmcost"] == DBNull.Value)
psmcost = 0.00;
else
psmcost = Convert.ToDecimal(ds.Tables["wsmtbl"].Rows[0]["psmcost"]);
if (esmcost != psmcost)
{
...
}
可以使用三元运算符语法,但出于可读性原因,我选择了上述语法。例如:
Decimal esmcost = ds.Tables["wsmtbl"].Rows[0]["esmcost"]
== DBNull.Value ? 0.00 : Convert.ToDecimal(ds.Tables["wsmtbl"].Rows[0]["esmcost"]);
试试这个,
if(ds.Tables["wsmtbl"].Rows[0]["esmcost"] == DBNull.Value)
{
ds.Tables["wsmtbl"].Rows[0]["esmcost"] = 0;
}
ds.Tables["wsmtbl"].Rows[0]["esmcost"] != ds.Tables["wsmtbl"].Rows[0]["psmcost"];