如何将数组(decimal [])转换为dynamic []数组?

时间:2017-05-17 11:02:17

标签: c# .net arrays dynamic

如何将已知类型的数组(例如十进制)转换为动态数组 - decimal []到dynamic []`?

我可以手动完成,但我想知道是否有更复杂的东西?

decimal[] decArray = someMethodReturnsDecimalArr();

// now conversion is needed
dynamic[] res = new dynamic[decArray.Count()];
for (var i = 0; i < res.Count(); i++)
{
    res[i] = boundaries[i];
}
return res;

我为什么需要这个?

首先,我真的需要这个!我知道如果代码是从头开始和我编写的,也许我会使用泛型或类似的东西。但我无法更改返回dynamic[]的代码部分。

因此,有dynamic[]属性的类:

public class Info
    {
        public dynamic[] Points { get; set; }
         ...
    }

根据不同的复杂标准,有时Pointsdecimal,有时为DateTimes,或者还有其他多种可能性。这基于来自数据库和UI的数据。 这不是我的设计,我无法改变它。

methodX返回Info课程。 我的部分是实现某些特定计算的方法,这些方法返回decimal[]或其他类型。之后我必须转换为dynamic[],以便它可以使用已有的方法。

decimal[] decArray = someMethodReturnsDecimalArr();

double[] doubleArray = someMethodReturnsDoubleArr();

所有这些数组都必须设置为Points。 (我试着在这里简化描述。)

2 个答案:

答案 0 :(得分:3)

使用LINQ:

dynamic[] res = decArray.Cast<dynamic>().ToArray();

答案 1 :(得分:1)

使用linq,方法Cast

var res = decArray.Cast<dynamic>();