添加/求和两个数组



我遇到了一个纯粹假设的问题,感觉它有一个简单的解决方案,如果我找到正确的linq方法…

我有两个int型数组,我知道它们的大小相同。我想创建大小相同的第三个数组,其中第三个数组中的元素是前两个数组中对应位置的元素之和。

下面是一个方法,它应该显示我想要做什么。

public static int[] AddArrays(int[] a, int[] b)
{
    int[] newArray = new int[a.Length];
    for (int i = 0; i<a.Length; i++)
    {
        newArray[i]=a[i]+b[i];
    }
    return newArray;
}

有没有我可以使用的Linq方法,比如

return a.DoStuff(b, (x,y) => x+y)

之类的?

我应该注意到,这可能属于家庭作业的类别,因为原始问题来自我正在查看的网站(尽管我找不到问题的直接链接),而不是作为我需要工作或任何东西的问题。

如果没有简单的方法存在,那么最灵动的方法是什么?array.each似乎有无法轻松索引第二个数组以将值添加到您正在迭代的数组的问题,这导致我想知道Linq在这种情况下是否会有任何帮助…

压缩:)

var a = new int[] {1,2,3 };
var b = new int[] {4,5,6 };
a.Zip(b, (x, y) => x + y)

您可以使用Select方法。

int[] a = new[] { 1, 2, 3 };
int[] b = new[] { 10, 20, 30 };
var c = a.Select ((x, index) => x + b[index]).ToArray();
public static int[] AddArrays(int[] a, int[] b)
{
     return a.Zip(b, (x,y) => x+y).ToArray();
}
IList<int> first = new List<int> { 2, 3, 4, 5 };
IList<int> second = new List<int> { 2, 3, 4, 5 };
var result = Enumerable.Zip(first, second, (a, b) => a + b);

无LINQ:

private static IEnumerable<int> AddArrays(IEnumerable<int> a1, IEnumerable<int> a2)
{
    var e1 = a1.GetEnumerator();
    var e2 = a2.GetEnumerator();
    while (e1.MoveNext() && e2.MoveNext())
        yield return e1.Current + e2.Current;
}

如果你有一个IEnumerable<int[]> arrayCollection求和:

arrayCollection.Aggregate((a,b) => a.Zip(b, (x,y) => x + y).ToArray())

最新更新