Ответ 1
Zip it:)
var a = new int[] {1,2,3 };
var b = new int[] {4,5,6 };
a.Zip(b, (x, y) => x + y)
Я столкнулся с чисто гипотетической проблемой, которая кажется, что у нее есть легкое решение, если я найду правильный метод 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 быть какой-либо помощью вообще в этой ситуации...
Zip it:)
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);