我知道如何使用for循环.是否可以使用LINQ或lambdas做这样的事情?
int[] a = { 10, 20, 30 }; int[] b = { 2, 4, 10 }; int[] c = a * b; //resulting array should be { 20, 80, 300 }
Jon Skeet.. 6
编辑:下面的代码将工作,但它不像使用显式方法那样可读.LINQ非常棒,它确实增加了可读性......但这不是其中之一.
这是CMS答案let
的简化版本 - 不需要额外的内容,当您只是进行投影时,使用点符号更简单:
int[] result = Enumerable.Range(0, a.Length) .Select(i => a[i] * b[i]) .ToArray();
另一种方法是使用Select的形式,它采用索引:
int[] result = a.Select((value, index) => value * b[index]) .ToArray();
Cameron MacF.. 5
使用压缩功能(新的.NET 4.0)详情点击这里:
int[] a = { 10, 20, 30 }; int[] b = { 2, 4, 10 }; int[] c = a.Zip(b, (a1, b1) => a1 * b1).ToArray();
在.NET 4发布之前,您可以使用上面链接中的zip实现.
编辑:下面的代码将工作,但它不像使用显式方法那样可读.LINQ非常棒,它确实增加了可读性......但这不是其中之一.
这是CMS答案let
的简化版本 - 不需要额外的内容,当您只是进行投影时,使用点符号更简单:
int[] result = Enumerable.Range(0, a.Length) .Select(i => a[i] * b[i]) .ToArray();
另一种方法是使用Select的形式,它采用索引:
int[] result = a.Select((value, index) => value * b[index]) .ToArray();
使用压缩功能(新的.NET 4.0)详情点击这里:
int[] a = { 10, 20, 30 }; int[] b = { 2, 4, 10 }; int[] c = a.Zip(b, (a1, b1) => a1 * b1).ToArray();
在.NET 4发布之前,您可以使用上面链接中的zip实现.