2011-12-20 103 views
3

有一段代碼,如:使用地圖,減少訂貨清單

public class Idea 
{ 

    (...) 
    public IList<IdeaSupporter> Supporters { get; set; } 

} 

public class IdeaSupporter 
{ 
    (...) 
    public int Tokens { get; set; } 
} 

嘗試訂購的支持者令牌的想法。我知道我必須使用map-reduce,但我很新。任何人都知道如何使用map-reduce在這種情況下正確地看起來?

+0

'Supporters.Sort()'有什麼問題?你的名單中是否有數十萬甚至數百萬的支持者? – 2011-12-20 16:17:15

+0

http://stackoverflow.com/questions/3624384/sorting-large-data-using-mapreduce-hadoop – 2011-12-20 16:55:57

回答

0

的指數應該是這樣的:

from idea in docs.Ideas 
select new 
{ 
    SumOfSupportersTokens = idea.Supporters.Sum(x=>x.Tokens) 
} 

請注意,這不是一個地圖/減少指數,它是輸出和一個簡單的地圖索引。 然後你可以在那裏訂購。

+0

謝謝!還有兩個簡短的問題:1)我應該在文檔級別添加索引,而不是在代碼中,對不對? 2)如何在代碼中使用該索引:'list.OrderByDescending(????)' – 2011-12-21 09:15:09

+0

該索引不能保存 - 發生錯誤:錯誤CS1977:無法將lambda表達式用作動態調度操作的參數首先將其轉換爲委託或表達式樹類型'任何想法應該如何? – 2011-12-21 10:51:39