2012-03-21 58 views
1

假設我有一個函數c [i] = f(x [i],y [i])。我有輸入值數組x和y的長度相等,我想最後計算數組c的值。我如何得到使用LINQ?LINQ:通過索引來評估數組元素匹配的函數

即不必寫:

c = new double[x.Length]; 

for (int i = 0; i < x.Length; i++) 
{ 
    c[i] = f(x[i], y[i]); 
} 

回答

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; 
} 
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(); 
0

可以使用郵編方法計算

int[] a = { 4, 2, 3 }; 
int[] b = { 9, 1, 0 }; 
var result = a.Zip(b, (i, j) => i + j);