当前位置:  开发笔记 > 编程语言 > 正文

你可以使用LINQ或lambdas来执行矩阵运算吗?

如何解决《你可以使用LINQ或lambdas来执行矩阵运算吗?》经验,为你挑选了2个好方法。

我知道如何使用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实现.



1> Jon Skeet..:

编辑:下面的代码将工作,但它不像使用显式方法那样可读.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();



2> Cameron MacF..:

使用压缩功能(新的.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实现.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有