将IGrouping转换为IDictionary

时间:2016-11-17 21:52:05

标签: c# linq dictionary group-by

我有以下分组作为数据库查询的结果:

5: Key1
3: Key2, Key3, Key4
2: Key5
1: Key6, Key7

我想通过分组键将顶部x(而x是用户定义的)作为字典。

对于前三名我想要一个词典

Key1: 5
Key2: 3
Key3: 3
Key4: 3
Key5: 2

我需要前2名

Key1: 5
Key2: 3
Key3: 3
Key4: 3

仅限前1名

Key1: 5

如何将IGrouping<int, string>转换为IDictionary<string, int>。 注意:密钥是唯一的。

1 个答案:

答案 0 :(得分:5)

首先,您可以致电[[1, 1], [1, 1], [1, 1, 1]]

来获得“前N名”群组
Take

然后展平为价值密钥对列表

groups.Take(n)

然后只需致电 .SelectMany(g => g, (g, k) => new {Value = g.Key, Key = k})

ToDictionary