List<double[]> Patterns;
我使用上面的列表来存储模式列表,这里每个模式都是一个双精度数组(double [])。 使用波纹管代码,我添加了一些模式。
Patterns.Add(new double[]{1,2,3});
Patterns.Add(new double[]{1,1,1});
使用以下代码添加所有模式
if (Patterns.Count > 0)
{
double[] Result = new double[Patterns[0].Length];
Patterns.ForEach((pt) =>
{
for (int i = 0; i < pt.Length; i++)
{
Result[i] += pt[i];
}
});
}
此处结果包含
{2,3,4}
有更好的(更少代码)方式吗?喜欢
double Result [] = Patterns.SomeFunction()或LINQ-Query
答案 0 :(得分:1)
好吧,您可以使用Enumerable.Range
迭代数组中的所有相关位置,然后Sum
对每个位置的所有值求和:
// Variable names changed to follow normal C# conventions
var size = patterns[0].Length;
var result = Enumerable.Range(0, size)
.Select(index => patterns.Sum(p => p[index]))
.ToArray();
我认为这就是你所追求的......当然,如果任何一个阵列比第一个阵列短,它就会中断。