LINQ:评估数组元素与索引匹配的函数

时间:2012-03-21 11:03:28

标签: c# .net linq

假设我有一个函数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]);
}

3 个答案:

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