如何将已知类型的数组(例如十进制)转换为动态数组 - 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; }
...
}
根据不同的复杂标准,有时Points
为decimal
,有时为DateTimes
,或者还有其他多种可能性。这基于来自数据库和UI的数据。
这不是我的设计,我无法改变它。
有methodX
返回Info
课程。
我的部分是实现某些特定计算的方法,这些方法返回decimal[]
或其他类型。之后我必须转换为dynamic[]
,以便它可以使用已有的方法。
decimal[] decArray = someMethodReturnsDecimalArr();
或
double[] doubleArray = someMethodReturnsDoubleArr();
所有这些数组都必须设置为Points
。
(我试着在这里简化描述。)
答案 0 :(得分:3)
使用LINQ:
dynamic[] res = decArray.Cast<dynamic>().ToArray();
答案 1 :(得分:1)
使用linq,方法Cast
var res = decArray.Cast<dynamic>();