2013-07-26 113 views
0

我有數據的集合,它是這樣的:在C#中的字典中提取辭典鍵和值

Dictionary<string, Dictionary<string,IEnumerable<AGString>>> Data = new Dictionary<string, Dictionary<string,IEnumerable<AGString>>>(); 

Dictionary<string,IEnumerable<AGString>> stdData = new Dictionary<string,IEnumerable<AGString>>(); 

後,我要提取這些數據,將它們放置在另一個數據結構,比如我已經決定了的數據,因爲它遵循:

stdData.Add(item.ObjectName,item.Contents); // this creates the inner dictionary 
Data.Add(collection,stdData); //This creates the final Data dictionary 

我曾嘗試用Data.Key,Data.Keys提取信息,但我不能提取數據。任何線索?

+3

「無論我做什麼不工作」爲我們提供了非常小:

var flatKeyValue = from outer in Data from inner in outer.Value select new { NewKey = outer.Key, NewVal1 = inner.Key, NewVal2 = inner.Value }; 

所以,現在我們可以通過一個簡單的foreach循環訪問我們敬愛的數據:我們可以通過LINQ的,因爲它遵循訪問它們信息。我們不知道你已經嘗試了什麼,你期望發生什麼,或者發生了什麼。請參閱http://tinyurl.com/so-list –

+0

我已經嘗試過使用鍵和值對從詞典結構中的字典中提取數據。但是,我沒有收到數據。我只想知道在這種情況下通用的方法是什麼。 – user843681

+0

我可以購買元音嗎? –

回答

0

因此,要解決這個問題的優雅的方式是使用LINQ的,而你不需要買一個元音。 該結構包含一個內部字典和外部字典。

foreach (var item in flatKeyValue) 
{ 
    Console.WriteLine(item.NewKey); // you can try NewVal1, NewVal2 quite simply here 
} 
+0

好吧,我看着它。我喜歡Linq,因爲它給了我一個更易理解的代碼,遠遠不能確定這是合格的,我仍然懷疑對優雅的追求...... –

0

完全不知道你正在嘗試做的,但

鑑於

Dictionary<string, Dictionary<string,IEnumerable<AGString>>> Data = new Dictionary<string, Dictionary<string,IEnumerable<AGString>>>(); 

foreach(string k1 in Data.Keys) 
{ 
    foreach(string k2 in Data[k1].Keys) 
    { 
     foreach(AGString ag in Data[k1][k2]) 
     { 
     // do something with k1, k2 and ag 
     } 
    } 
} 
+0

看看我的解決方案。 – user843681