System.InvalidCastException: 对象不能从 DBNull 转换为其他类型。datatable中用时列为decimal型,对此列中大于0的求平均值   decimal liaokys = Convert.ToDecimal(dt.Compute("AVG(用时)", "用时>0"));
提示如下信息,请高手指点System.InvalidCastException: 对象不能从 DBNull 转换为其他类型。

解决方案 »

  1.   

    dt.Compute("AVG(用时)", "用时>0"));
    你能确定它查到数据了么?因为没有查到数据,你后边的是null所以没法转化,你加断点看看,是不是null
      

  2.   

    不行加段点也没法看这句中哪个是null
    dt.Compute("AVG(用时)", "用时>0")用时这列我提取数据的时候就不提取空值
      

  3.   

    使用DBNull.value进行判断
    dr[""]==DBNull.Value? " ":"";
      

  4.   

    Object x = dt.Compute("AVG(用时)", "用时>0");
    decimal liaokys =0;
    if(x!=DBNull.Value)
    liaokys = Convert.ToDecimal(x);