Подтвердить что ты не робот

Добавление/суммирование двух массивов

Я столкнулся с чисто гипотетической проблемой, которая кажется, что у нее есть легкое решение, если я найду правильный метод linq...

У меня есть два массива ints, и я знаю, что они одного размера. Я хочу создать третий массив того же размера, где элементы в третьем массиве представляют собой сумму элементов в первых двух массивах в соответствующей позиции.

Ниже приведен метод, который должен показать, что я хочу сделать.

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)

или что-то в этом роде?

Я должен отметить, что это, вероятно, относится к категории домашних заданий, поскольку исходная проблема исходила с веб-сайта, на который я смотрел (хотя я не могу найти прямую ссылку на проблему), а не как вопрос, который мне нужен для работы или что-то еще.

Если не существует простого метода, то каков самый способ Linqy для этого? a array.each, похоже, имеет проблему неспособности легко индексировать второй массив, чтобы добавить значения к тому, который вы выполняете, заставляя меня задаться вопросом, может ли Linq быть какой-либо помощью вообще в этой ситуации...

4b9b3361

Ответ 1

Zip it:)

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

Ответ 2

Вы можете использовать метод Select.

int[] a = new[] { 1, 2, 3 };
int[] b = new[] { 10, 20, 30 };

var c = a.Select ((x, index) => x + b[index]).ToArray();

Ответ 3

public static int[] AddArrays(int[] a, int[] b)

{
     return a.Zip(b, (x,y) => x+y).ToArray();
}

Ответ 4

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);