2013-07-26 147 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