恢复双精度的空值

本文关键字:空值 双精度 恢复 | 更新日期: 2023-09-27 17:55:44

我有一个包含几个字段的表,其中一个是可以包含空值的双精度类型字段...

使用 ADO 和 SQLDATAReader 我在变量中恢复该字段。我将此变量定义为:双精度,双精度?,双精度,双精度?...我得到了值(来自 de SQLDataReader)使用 GetValue(并执行强制转换)或使用 GetDouble...当值为 null 时,每个都会崩溃。

唯一有效的方法是将此变量定义为对象,但我不想要它。提前思考可能很难在我的项目中处理这种类型......

引用:当这个值为 0 或 null 时,我必须区分情况......

知道伙计们吗?

编辑:

Object.DoubleValue= (Double?)Datos.GetDouble(1);
Object.doubleValue= (double?)Datos.GetDouble(1);

不工作。

Object.ObjectValue= Datos.GetValue(1);

加工。

恢复双精度的空值

不幸的是,

没有开箱即用的方法。但是您可以使用这样的扩展方法来调整它:

(请注意,它只是一个适用于您的情况的粗略原型,但可能需要一些检查和约束等)

public static class Helpers
{
    public static T GetSmartValue<T>(this SqlDataReader r, int ordinal)
    {
        dynamic value = r.GetValue(ordinal);
        if (value == DBNull.Value)
        {
            value = null;
            return value;
        }
        return (T) value;
    }
}

然后在您的代码中

var x = yourReader.GetSmartValue<double?>(1);