【技术散分300】一个Linq的小例子
实际上,我读了许多google的mapreduce的文献,曾经尝试开发过并发的多服务器的数据库接口,并且也同时花了足足2天时间开发mapreduce程序(虽然最后只有几十行,但是控制逻辑复杂)。
在使用自己的mapreduce写了几个小程序以后,忽然发现我真的很蠢,原来PLinq早已经提供了更加强大的功能。
这里贴一个小例子,假设在asp.net应用中想打印 ~/app_data/Test_090724_WebUserControl.txt 中的文件的每一个字符的使用频率,就可以这样写:
var fileNetUrl = this.ResolveUrl("~/app_data/Test_090724_WebUserControl.txt");
var filePhysicalUrl = Server.MapPath(fileNetUrl);
var chars = File.ReadAllLines(filePhysicalUrl).AsParallel().SelectMany(n => n.ToCharArray());
var res = from c in chars group c by c into gc select new { charactor = gc.Key, count = gc.Count() };
res = res.OrderBy(c => c.charactor);
this.GridView1.DataSource = res;
this.GridView1.DataBind();