恢复 double 的 null
Recovering double´s null
我有一个包含几个字段的 table,其中一个是可以包含空值的 Double 类型字段...
我使用 ADO 和 SQLDATAReader 在变量中恢复了该字段。我将此变量定义为:Double, Double?, double, double?... 我使用 GetValue[=31 获得了值(来自 de SQLDataReader) =](并进行转换)或使用 GetDouble...当值为 null 时,每个都会崩溃。
唯一有效的方法是将此变量定义为对象,但我不想要它。提前考虑可能很难在我的项目中处理这种类型...
Quote: 当这个值为 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);
我有一个包含几个字段的 table,其中一个是可以包含空值的 Double 类型字段...
我使用 ADO 和 SQLDATAReader 在变量中恢复了该字段。我将此变量定义为:Double, Double?, double, double?... 我使用 GetValue[=31 获得了值(来自 de SQLDataReader) =](并进行转换)或使用 GetDouble...当值为 null 时,每个都会崩溃。
唯一有效的方法是将此变量定义为对象,但我不想要它。提前考虑可能很难在我的项目中处理这种类型...
Quote: 当这个值为 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);