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

«что я делаю не работаю» дает нам очень мало Информация. Мы не знаем, что вы пробовали, что вы ожидали, или что на самом деле произошло. См. Http://tinyurl.com/so-list –

+0

Я пробовал пары ключей и значений для извлечения данных из этого словаря в структуре словаря. Но я не получаю данные. Я просто хочу знать, что это общий подход в этой ситуации. – user843681

+0

Могу ли я купить гласный? –

ответ

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

Смежные вопросы