我可以使用LINQ以数字方式添加两个数组的值吗?

ja7*_*a72 2 c# linq vector operators

如果我有两个数值数组,例如double[] a, b,我想生成第三个数组,每个元素都是添加的a,b我可以用循环来做

double[] a, b, c
// fill in a, b and initialize c
for(int i=0; i<c.Length; i++)
{
    c[i] = a[i] + b[i];
}
Run Code Online (Sandbox Code Playgroud)

所以问题是; 有没有办法用LINQ而不是循环?

PS.假设我已经有了二元运算符Func<double,double,doube> add = (x,y)=>x+y;

Jon*_*eet 5

听起来你只是想要这个Zip方法:

var result = a.Zip(b, add).ToArray();
Run Code Online (Sandbox Code Playgroud)

(当然,这仍将在内部循环 - 但不在您的代码中.)

编辑:Zip仅适用于.NET 4及更高版本,但Eric Lippert关于该主题的博客文章包含示例源代码......或者您可以使用我的Edulinq实现(请参阅相应的博客文章).