2014-01-17 74 views
0

我有這樣的事情:Lambda表達式+詞典:具有相同鍵的項已被添加

var result = new MyList() 
{ 
    Items = new List<Item>(), 
    ... 
} 

,其中每個項目都有,除其他外,一個itemType財產,我需要一個Dictionary<itemType, count>它返回每個itemType在我的列表中的計數。 我這樣做:

var res = new Dictionary<itemType, int>(); 
res = result.Items.ToDictionary(a => a.itemType, 
           a=> result.Items.Count(i => i.itemType== a.itemType));} 

但我發現了這個錯誤,當然怎麼一回事,因爲有幾個項目在我的列表中的同類型的「的使用相同的密鑰已經被添加項目」,怎麼能我做一個小組或一個明顯的?

+1

http://stackoverflow.com/questions/1300088/distinct-with-lambda –

回答

1

可以縮短,但無論如何:

var groups = result.Items.GroupBy(r => r.itemType).Select(g => new { id = g.Key, count = g.Count() }); 
var res = new Dictionary<itemType, int>(); 
res = groups.ToDictionary(a => a.id, a=>a.count); 
相關問題