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