簡體   English   中英

如何在C#中將小數對象轉換為小數數組

[英]How to convert an Object of Decimals into a Decimal Array in C#

我在C#中有一個object ,該object來自使用Interop在Excel中的命名范圍中進行讀取,看起來像這樣:

myObject =
oName.RefersToRange.Value {object[1..1, 1..5]}
((object[,])oName.RefersToRange.Value)[1, 1] 10
((object[,])oName.RefersToRange.Value)[1, 2] 20
((object[,])oName.RefersToRange.Value)[1, 3] 30
((object[,])oName.RefersToRange.Value)[1, 4] 40
((object[,])oName.RefersToRange.Value)[1, 5] 50

我想將其轉換為Decimal

myDecimal = {[10.0], [20.0], [30.0], [40.0], [50.0]}

我正在嘗試通過使用以下代碼來做到這一點:

decimal[,] myDecimal = (decimal[,])myObject

我也嘗試過:

decimal[,] myDecimal = Convert.ToDecimal(myObject)

還有很多其他事情,沒有一個真正起作用,所有這些都會給我帶來錯誤。

我想象實現此目的的另一種方法是創建一個遍歷兩個維並將其轉換為Decimal或將值設置為0.0的方法。 沒關系,但是我似乎無法正常工作。 這就是我所擁有的(順便說一句,我知道這很草率,只是為了證明我在解決這個問題上的徒勞):

    public static decimal[,] Convert2dObjectTo2dDecimalArray(object obj)
    {
        decimal[,] result = default(decimal[,]);

        for (int i = 0; i <= obj.SomeUnknownMethodThatCountsElements(0); i++)
        {
            for (int j = 0; i <= obj.SomeUnknownMethodThatCountsElements(1); j++)
            {
                try
                {
                    result[i, j] = Convert.ToDecimal(obj[i, j]);
                }
                catch (Exception)
                {
                    result[i, j] = new decimal(0.0);
                }
            }
        }

        return result;
    }

任何幫助是極大的贊賞。

順便說一句-我知道上面的示例實際上是一維數據集,但是我需要使用二維數據,我只是想使示例用例簡短。

你應該能夠做到這一點

object[,] obj = new object[,] { { 1.1, 2.1, 2.3 },{ 3.2, 4.3, 5.4 } };
decimal[,] result = new decimal[obj.GetLength(0), obj.GetLength(1)];

for (int i = 0; i < obj.GetLength(0); i++)
{
    for (int j = 0; j < obj.GetLength(1); j++)
    {
        try
        {
            result[i, j] = Convert.ToDecimal(obj[i, j]);
        }
        catch (Exception)
        {
            result[i, j] = new decimal(0.0);
        }
    }
}

暫無
暫無

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

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