程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#版的MapReduce

C#版的MapReduce

編輯:C#入門知識

如果不知道MapReduce是怎麼工作的,請看這裡,如果不知道MapReduce是什麼,請google之!

今天“閒”來無事,忽想起C#裡沒有MapReduce的方法,構思之,coding之:

 IEnumerable<T>.MapReduce
          Dictionary<TKey, TResult> MapReduce<TInput, TKey, TValue, TResult> IEnumerable<TInput><TInput, IEnumerable<KeyValuePair<TKey, TValue>>><TKey, IEnumerable<TValue>, TResult><TKey, List<TValue>> mapResult =  Dictionary<TKey, List<TValue>> ( item  ( one <TValue> (!mapResult.TryGetValue(one.Key, =  List<TValue> result =  Dictionary<TKey, TResult> ( m 

注:由於在map方法裡可emit多次,所以這裡返回IEnumerable,下文例子中可以看到用yield return來實現。

例:

       ID { ;   Name { ;   Age { ; 

 

          Main(<Person> list= List<Person> Person { ID=, Name=, Age= Person { ID = , Name = , Age =  Person { ID = , Name = , Age =  Person { ID = , Name = , Age =  Person { ID = , Name = , Age =  result = list.MapReduce<Person, , , >=> .Join( ( d +  +  IEnumerable<KeyValuePair<, >> (p.Age >    KeyValuePair<, >

 上面程序所做的事為統計年齡大於22的,各個年齡都有誰,顯示如:

23:user1,user3
24:user2
25:user4
請按任意鍵繼續。。。

 (嫌上傳圖片太麻煩,弄了個html版控制台,見諒!)

肯定有人會問為什麼map不像reduce方法一樣用lambda表達式,因為yield return不能在匿名方法和lambda表達式中!MS表示已知道這個問題,但重寫yield花費很大,將來肯定會解決!

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved