2012-03-21 7 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); 

またはあなたが十分なのparamsですでにメソッドを持っている場合は、単純に使用します。

var result = x.Zip(y, Function); 
// in this sample Function looks like: 
static int Function(int x, int y) 
{ 
    return x + y; 
} 
0

あなたは単純なSelectを使用することができます:

は、代わりに IEnumerable<int>int[]も終わりに ToArrayを追加する必要がある場合
var c = x.Select((x_i, i) => f(x_i, y[i])); 

:計算する

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); 
関連する問題