我有这样的事情:
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));}
但是我收到了这个错误“已经添加了一个具有相同键的项目”因为我的列表中有几个相同类型的项目,我该怎么做一个组通过或不同的???
答案 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);