假设我有一个函数c [i] = f(x [i],y [i])。我有相等长度的输入值数组x和y,我想在最后计算数组c的值。我如何使用LINQ获得它?
即。无需写:
c = new double[x.Length];
for (int i = 0; i < x.Length; i++)
{
c[i] = f(x[i], y[i]);
}
答案 0 :(得分:8)
使用Zip
方法,例如:
int[] x = { 1, 2, 3 };
int[] y = { 4, 5, 6 };
var result = x.Zip(y, (i, j) => i + j);
或者如果你已经有足够的参数方法,只需使用:
var result = x.Zip(y, Function);
// in this sample Function looks like:
static int Function(int x, int y)
{
return x + y;
}
答案 1 :(得分:0)
您可以使用简单的Select
:
var c = x.Select((x_i, i) => f(x_i, y[i]));
如果c
需要int[]
而不是IEnumerable<int>
,请将ToArray
追加到最后:
var c = x.Select((x_i, i) => f(x_i, y[i])).ToArray();
答案 2 :(得分:0)
您可以使用Zip方法计算
int[] a = { 4, 2, 3 };
int[] b = { 9, 1, 0 };
var result = a.Zip(b, (i, j) => i + j);