2016-11-17 63 views
2

我有以下的分組作爲一個數據庫查詢的結果:轉換IGrouping到IDictionary的

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

我想頂端X(而x是用戶定義的)由分組密鑰作爲字典。

對於前3我想要一個解釋

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>。 注意:鑰匙是唯一的。

+0

你能解釋一下「For Top 3」的含義嗎?你的意思是你想根據數據庫中的前N個結果創建一個字典? –

+0

我想通過分組的密鑰(如果密鑰具有多個匹配密鑰,可能不止3個)區分前3個密碼 – KingKerosin

回答

5

首先通過調用Take獲得 「最佳N」 組:

groups.Take(n) 

然後壓扁價值密鑰對的列表

 .SelectMany(g => g, (g, k) => new {Value = g.Key, Key = k}) 

然後就叫ToDictionary

 .ToDictionary(kvp => kvp.Key, kvp => kvp.Value); 
+0

正是我在尋找的內容。謝謝! – KingKerosin