日期:2014-05-17  浏览次数:20373 次

奇怪了,“指定的转换无效。” , 原来用着好好的。
各位大师,请看一下结果集。
DataRow 中的字段:

01 : 20.083333

02 :NULL

03: 20.58091


double testone = double.Parse(row["01"].ToString());

这样写,对“01、03”是可以的,但是“02”为“Null”就不行。



double testthree = (double)(row.Field<decimal?>("01") ?? 100);


这样写应该适用于“01、02、03”啊,如果是“row.Field<decimal?>("XX")”为“NULL”,那么设为“100”,如果不为“NULL”,那么转化为“Double”。

为什么提示“指定的转换无效。”??? 原来这样用没有问题的啊。
 
难道要
  if(row["01"] != null)
  {
  }
  else
  {
  }

  这样一个一个的判断???

------解决方案--------------------
(row["01"]??"").tostring()
------解决方案--------------------
double testone = double.Parse(row["01"] == DBNull.Value?"0":row["01"].ToString());

或者使用
double.TryParse
------解决方案--------------------
探讨

谢谢各位大师,

不明白原来这样写:double testthree = (double)(row.Field<decimal?>("01") ?? 100);
是没有问题的,现在咋么就报错了?

------解决方案--------------------
为Null当然不能这样转了

可以试一下这种方式:
Convert.Todecimal(row["01"])
------解决方案--------------------
DBNull和null不是一个东西,注意区分