添加(SUM)' List'的更好方法使用lambda表达式或LINQ在C#中的数组?

时间:2014-07-22 07:23:10

标签: c# linq collections lambda

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

1 个答案:

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

认为这就是你所追求的......当然,如果任何一个阵列比第一个阵列短,它就会中断。