0

我有一组看起来像这样的数据:

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

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

稍后我必须提取这些数据并将它们放在另一个数据结构中,例如我已经组成了 Data 如下:

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 提取信息,但无法提取数据。有什么线索吗?

4

2 回答 2

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
      }
   }
} 
于 2013-07-26T20:25:41.640 回答
0

所以,解决这个问题的优雅方法是使用 Linq,而且你不需要购买元音。这个结构包含一个内部字典和一个外部字典。我们可以通过 Linq 访问它们,如下所示:

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

所以,现在我们可以通过一个简单的 foreach 循环访问我们心爱的数据:

foreach (var item in flatKeyValue)
{
   Console.WriteLine(item.NewKey);  // you can try NewVal1, NewVal2 quite simply here
}
于 2013-07-26T20:58:46.233 回答