I am having difficulty reading values from the following object type array returned from Oracle stored procedure
var arrUtil = cmd.Parameters["UTILBYDAY"].Value;
The arrUtil array is of the below type and has these values. Any idea how to cast it to double type in c#?
{Oracle.ManagedDataAccess.Types.OracleDecimal[10]}
[0]: {28.16901408450704225352112676056338028169}
[1]: {57.24381625441696113074204946996466431095}
[2]: {29.34782608695652173913043478260869565217}
[3]: {22.02166064981949458483754512635379061372}
[4]: {70.56737588652482269503546099290780141844}
[5]: {79.78723404255319148936170212765957446809}
[6]: {62.41134751773049645390070921985815602837}
[7]: {23.40425531914893617021276595744680851064}
[8]: {5.31914893617021276595744680851063829787}
[9]: {63.507109004739336492890995260663507109}
I have tried to cast it to double using
double[] arraUtil = (double[]) cmd.Parameters["UTILBYDAY"].Value;
but it ended up in error that said unable to cast Oracle.ManagedDataAccess.Types.OracleDecimal[] to double[].
I have also tried googled around but couldn't find anything helpful. Any help is appreciated. Thank you.
Oracle.ManagedDataAccess.Types.OracleDecimal
type defines an explicit cast operator to convert its value to double
type.
You can convert them like this:
using System.Linq;
using Oracle.ManagedDataAccess.Types;
OracleDecimal[] arrUtil = cmd.Parameters["UTILBYDAY"].Value;
// Convert to double
double[] utils = arrUtil.Select(util => (double)util).ToArray();
// Convert to decimal
decimal[] utils = arrUtil.Select(util => (decimal)util).ToArray();
// Please note: This does NOT work!
double[] utils = arrUtil.Cast<double>().ToArray();
You can cast OracleDecimal
to byte
, short
, int
, long
, float
, double
and decimal
.
Here you can find all the explicit cast operators.