如何处理多个值的DBNull异常

时间:2019-07-12 21:06:14

标签: c# sql asp.net .net

我正在为模型分配值。其中一些值可以为null。我尝试了几种方法来处理DBNull值,但仍然出现错误

 dPbtbud.Xfer = dataFromFile.Tables[0].Rows[i][j++] == DBNull.Value ? 
      0.0 : 
      Convert.ToDouble(dataFromFile.Tables[0].Rows[i][j++]);

也尝试过

 dPbtbud.Xfer = dataFromFile.Tables[0].Rows[i][j++] is DBNull ? 
     0.0 : 
     Convert.ToDouble(dataFromFile.Tables[0].Rows[i][j++]);

似乎无法处理空值

1 个答案:

答案 0 :(得分:0)

我的建议是创建一个扩展方法来检查null和DBNull:

namespace Helper
{
 public static class ConvertEX1
    {
        public static object IsNull<T>(this object obj, T def) where T : struct
        {
            if (obj == null || obj == DBNull.Value)
                return (T)Convert.ChangeType(def, typeof(T));
            return (T)Convert.ChangeType(obj, typeof(T));
        }
    }
}

不要忘记在使用函数的每个.cs文件中导入名称空间:

using Helper;
...


dPbtbud.Xfer = (double)dataFromFile.Tables[0].Rows[i][j++].IsNull(0.0);