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

在.NET中映射和减少

如何解决《在.NET中映射和减少》经验,为你挑选了2个好方法。

哪些情况可以保证使用" Map and Reduce "算法?


这个算法有.NET实现吗?



1> Tony..:

Linq等同于Map和Reduce:如果你有幸拥有linq,那么你不需要编写自己的地图并减少功能.C#3.5和Linq已经拥有它,虽然名称不同.

Enumerable.Range(1, 10).Select(x => x + 2);

https://www.justinshield.com/2011/06/mapreduce-in-c/


**为什么哦为什么**他们不只是称其为“ Reduce”而不是“ Aggregate` ...” MS只是喜欢惹恼程序员
@JohnHenckel,我绝对不是权威人士,但是我很确定这来自SQL。我相信linq最初是作为在C#中简化与sql交互的方式而购买的。当您在那个世界中命名函数时,与“选择”和“分组依据”之类的东西相比,聚合听起来比“减少”听起来更加熟悉。我并不是说这是对的,这使我无休无止,但我想这就是原因。
链接不起作用,正确的链接是:https://www.justinshield.com/2011/06/mapreduce-in-c/

2> Joel Martine..:

非常适合mapreduce风格解决方案的问题类别是聚合问题.从数据集中提取数据.在C#中,可以利用LINQ以这种方式编程.

来自以下文章:http: //codecube.net/2009/02/mapreduce-in-c-using-linq/

GroupBy方法充当地图,而Select方法则将中间结果减少到最终结果列表.

var wordOccurrences = words
                .GroupBy(w => w)
                .Select(intermediate => new
                {
                    Word = intermediate.Key,
                    Frequency = intermediate.Sum(w => 1)
                })
                .Where(w => w.Frequency > 10)
                .OrderBy(w => w.Frequency);

对于分布式部分,您可以查看DryadLINQ:http: //research.microsoft.com/en-us/projects/dryadlinq/default.aspx

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