2016-10-21 50 views
-1

分組核心價值詞典列表在C#我有以下List<Dictionary<string, string>>密鑰對:使用LINQ

enter image description here

我怎麼會寫我的Linq查詢,這樣我只有1個字典,其中值分組按鍵?

+1

你嘗試過什麼? Linq有'GroupBy'和'ToDictionary' –

+1

提供一些代碼到目前爲止你已經嘗試過。你遇到的錯誤是什麼?這不是一個「社區,爲我工作」的平臺。 – phifi

+0

另外.....好像你可以用一個有4個屬性的類替換那些字典 –

回答

3
var result = data.SelectMany(item => item) 
    .GroupBy(item => item.Key) 
    .ToDictionary(key => key.Key, value => value.Select(i => i.Value).ToList()); 

對於給定的輸入:

List<Dictionary<string, string>> data = new List<Dictionary<string, string>> 
{ 
    new Dictionary<string, string> 
    { 
     ["Category"] = "99", 
     ["Role"] = "11", 
     ["Level"] = "22", 
     ["BillaleDays"] = "33", 
    }, 
    new Dictionary<string, string> 
    { 
     ["Category"] = "55", 
     ["Role"] = "66", 
     ["Level"] = "77", 
     ["BillaleDays"] = "88", 
    } 
}; 

結果是:

Category : (99,55) 
Role : (11,66) 
Level : (22,77) 
BillableDays : (33,88) 
+0

@Josh L - 很高興幫助:) –

+1

工程就像一個魅力!我沒有正確使用.ToDictionary函數。再次感謝 –

2
List<Dictionary<string, string>> data = new List<Dictionary<string,string>> 
{ 
    new Dictionary<string, string> 
    {   
     ["Name"] = "one", 
     ["Age"] = "22" 
    }, 
    new Dictionary<string, string> 
    { 
     ["Name"] = "two", 
     ["Age"] = "88", 
    } 
}; 

var result = data.SelectMany(item => item) 
       .GroupBy(item => item.Key) 
       .ToDictionary(key => key.Key, value => value.Select(i => i.Value).ToList()); 

輸出: Name:"one,"two", Age:"22","88"

+0

這與我想要的非常接近,但是我想通過Key進行分組而不是價值,這樣一個鍵有多個與之相關的值。 –

+0

可以更換的值的密鑰就地反之亦然 字典>測試= 樣品.GroupBy(R => r.key) .ToDictionary(T => t.value,T =>噸。選擇(r => r.value).ToList()); – Meena

+0

@Josh我已根據您的要求編輯我的答案,嘗試一次,並讓我知道是否有任何問題。 – Meena