各位大师,请看一下结果集。
DataRow 中的字段:01 : 20.08333302 :NULL03: 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
      {
       }       这样一个一个的判断???

解决方案 »

  1.   

    double testone = double.Parse(row["01"] == DBNull.Value?"0":row["01"].ToString());或者使用
    double.TryParse
      

  2.   


    原来这样用是没有问题的啊,奇怪了。    难道是返回结果集是“char”还是“decimal”的问题???
      

  3.   

    大侠   需要判断是否为NULL  为NULL  是不能ToString()
      

  4.   

    谢谢各位大师,

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

  5.   


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

  6.   

    为Null当然不能这样转了可以试一下这种方式:
    Convert.Todecimal(row["01"])
      

  7.   

    DBNull和null不是一个东西,注意区分