假設我有一個函數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);
,或者如果你已經方法有足夠的參數,可以簡單地使用:
var result = x.Zip(y, Function);
// in this sample Function looks like:
static int Function(int x, int y)
{
return x + y;
}
您可以使用簡單的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();
可以使用郵編方法計算
int[] a = { 4, 2, 3 };
int[] b = { 9, 1, 0 };
var result = a.Zip(b, (i, j) => i + j);