私は関数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]);
}
私は関数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]);
}
使用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;
}
あなたは単純な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();
あなたはジップメソッドを使用することができます
int[] a = { 4, 2, 3 };
int[] b = { 9, 1, 0 };
var result = a.Zip(b, (i, j) => i + j);