You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Oracle存储过程返回的OracleDecimal数组转为C#的double数组?

解决OracleDecimal数组转double数组的问题

你无法直接将Oracle.ManagedDataAccess.Types.OracleDecimal[]强制转换为double[],因为这是两种不同类型的数组,必须逐个转换数组中的每个元素。

方法一:使用LINQ快速转换

通过LINQ的Select方法遍历每个OracleDecimal元素,将其转换为double后再生成新数组:

// 先将参数值显式转为OracleDecimal数组
var oracleDecimalArr = (Oracle.ManagedDataAccess.Types.OracleDecimal[])cmd.Parameters["UTILBYDAY"].Value;
// 逐个转换为double并生成目标数组
double[] arrUtil = oracleDecimalArr.Select(od => (double)od).ToArray();

方法二:使用for循环转换

如果项目中未使用LINQ,可通过普通循环遍历完成转换:

var oracleDecimalArr = (Oracle.ManagedDataAccess.Types.OracleDecimal[])cmd.Parameters["UTILBYDAY"].Value;
double[] arrUtil = new double[oracleDecimalArr.Length];

for (int i = 0; i < oracleDecimalArr.Length; i++)
{
    arrUtil[i] = (double)oracleDecimalArr[i];
}

注意事项

OracleDecimal的精度高于double,转换时可能存在精度损失。如果业务场景对精度要求极高,建议转换为decimal类型,只需将代码中的(double)od替换为(decimal)od即可。

内容的提问来源于stack exchange,提问作者user20774180

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 01:05:26