用C#中的in dictionary提取dictionary中的键和值

本文关键字:dictionary 键和值 提取 中的 in | 更新日期: 2023-09-27 18:25:17

我有一组数据,如下所示:

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

用C#中的in dictionary提取dictionary中的键和值

绝对不知道你想做什么,但

给定

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
      }
   }
} 

所以,解决这个问题的优雅方法是使用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
}