将任何OleDbReader Double/Int16/Int32/Int64类型转换为C#Double?

将任何OleDbReader Double/Int16/Int32/Int64类型转换为C#Double?,c#,ms-access,casting,type-conversion,oledb,C#,Ms Access,Casting,Type Conversion,Oledb,如果我创建一个新的OleDbReader,如下所示: OleDbCommand command = new OleDbCommand(query, ActiveConnection); reader = command.ExecuteReader(); while(reader.Read()) { someList.Add((double)reader["columnHeader"]); } 如果返回的数据类型为Int16/Int32/Int64而不是double,如何确保始终从指定的列

如果我创建一个新的OleDbReader,如下所示:

OleDbCommand command = new OleDbCommand(query, ActiveConnection);
reader = command.ExecuteReader();
while(reader.Read())
{
   someList.Add((double)reader["columnHeader"]);
}
如果返回的数据类型为Int16/Int32/Int64而不是double,如何确保始终从指定的列返回double?我是否必须为每种可能的类型创建一个处理程序?我知道存在
Double.Parse
,但它只接受字符串。因此,虽然我可以事先使用
ToString()
,但我觉得这可能不是最直接的类型转换方法

类似地,对于另一列,我希望确保任何String/Double/Int16/Int32/Int64值都作为字符串返回。
ToString()
会处理这些情况吗


我对潜在的溢出错误没有意见,因为不管怎样我都会检查异常。

您应该调用
Convert.ToDouble()
,它对每种类型都有一个处理程序


相比之下,
ToString()
将适用于任何非空值。(只要它覆盖
ToString()
;所有数字类型都覆盖它)

您应该调用
Convert.ToDouble()
,它对每种类型都有一个处理程序


相比之下,
ToString()
将适用于任何非空值。(只要它覆盖
ToString()
;所有数字类型都覆盖它)

您应该调用
Convert.ToDouble()
,它对每种类型都有一个处理程序


相比之下,
ToString()
将适用于任何非空值。(只要它覆盖
ToString()
;所有数字类型都覆盖它)

您应该调用
Convert.ToDouble()
,它对每种类型都有一个处理程序


相比之下,
ToString()
将适用于任何非空值。(只要它覆盖
ToString()
;所有数字类型都覆盖)

完美。不知道我以前怎么没遇到过。太好了。不知道我以前怎么没遇到过。太好了。不知道我以前怎么没遇到过。太好了。不知道我以前怎么没遇到过。