Lambda表达式+字典:已添加具有相同键的项

时间:2014-01-17 02:25:04

标签: c# asp.net-mvc-4 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 个答案:

答案 0 :(得分: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);