2016-06-27 4 views
0

У меня есть словарь < string, object>, который имеет сопоставление строки и словаря < string, int>. Как добавить пару ключевых значений во внутренний словарь < string, int>?Добавление пары значений ключа в словаре в словаре

Dictionary <string,object> dict = new Dictionary <string,object>(); 
Dictionary <string,int> insideDict = new Dictionary <string,int>(); 
// ad some values in insideDict 
dict.Add("blah",insideDict); 

Итак, теперь у dict есть словарь, сопоставленный с строкой. Теперь я хочу отдельно добавлять значения в innerDict. Я попытался

dict["blah"].Add(); 

Где я буду неправильно?

+0

@ GiladGreen Добавлено. – nighthowler

+0

Сравните это с моим ответом. Комментарий, который вы добавили до вершины .Add не является правильным - эта строка добавляет во внешний словарь элемент с ключом «бла» и внутриDict как значение. Второй .Add - вам нужно дать этой функции некоторые параметры - для этого требуется другой ключ и значение (для внутреннего словаря) –

+0

@GiladGreen Этот комментарий был для второго оператора, означающего добавить некоторые пары ключевых значений для innerDict – nighthowler

ответ

2

Что-то, как показано ниже

 Dictionary<string, object> dict = new Dictionary<string, object>(); 
     dict.Add("1", new Dictionary<string, int>()); 

(OR), если вы уже определили внутренний словарь затем

 Dictionary<string, object> dict = new Dictionary<string, object>(); 
     Dictionary<string, int> innerdict = new Dictionary<string, int>(); 
     dict.Add("1", innerdict); // added to outer dictionary 
     string key = "1"; 
     ((Dictionary<string, int>)dict[key]).Add("100", 100); // added to inner dictionary 

За ваш комментарий попытался это, но облажались где-то

У вас не было причин для вашей нижней линии whe вы забыли указать значение внутреннего словаря Dictionary<string, int>, так как значение внешнего словаря составляет object. Вам лучше указать, что ваш внешний словарь объявлен строго типизированным.

dict.Add("blah",insideDict); //forgot casting here 
+0

Я хочу, чтобы добавить новые пары ключевых значений в innerDict, где innerDict уже имеет некоторые значения. – nighthowler

+0

@vishallc, см. Править в ответ, если это помогает. – Rahul

+0

Спасибо, я тоже пробовал это, но прикрутил куда-то. – nighthowler

0
Dictionary<string, Dictionary<string,TValue>> dic = new Dictionary<string, Dictionary<string,TValue>>(); 

Замените TValue на свой тип значения.

3

Вы имеете в виду что-то вроде этого?

 Dictionary<string, Dictionary<string, int>> collection = new Dictionary<string, Dictionary<string, int>>(); 

     collection.Add("some key", new Dictionary<string, int>()); 
     collection["some key"].Add("inner key", 0); 
+0

Я хочу чтобы иметь возможность добавлять новые пары ключевых значений в innerDict. – nighthowler

+0

Как и моя третья строка. Когда я сделал сбор ["some key"], я получил ссылку на значение этого ключа - это строка в словаре int. а затем просто .Add («другой ключ», 2); –