用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提取信息,但无法提取数据。有线索吗?
绝对不知道你想做什么,但
给定
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
}