簡體   English   中英

從 Oracle 存儲過程返回的 Cast 數組

[英]Cast array returned from Oracle stored procedure

我很難從 Oracle 存儲過程返回的以下對象類型數組中讀取值

var arrUtil = cmd.Parameters["UTILBYDAY"].Value;

arrUtil 數組屬於以下類型並具有這些值。 知道如何在 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}

我試圖將其轉換為雙重使用

double[] arraUtil = (double[]) cmd.Parameters["UTILBYDAY"].Value;

但最終出現錯誤,說無法將 Oracle.ManagedDataAccess.Types.OracleDecimal[] 轉換為 double[]。

我也試過用谷歌搜索但找不到任何有用的東西。 任何幫助表示贊賞。 謝謝你。

Oracle.ManagedDataAccess.Types.OracleDecimal類型定義了一個顯式轉換運算符以將其值轉換為double精度類型。

您可以像這樣轉換它們:

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();

您可以將OracleDecimalbyteshortintlongfloatdoubledecimal

在這里您可以找到所有顯式轉換運算符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM