bazzi
bazzi

Reputation: 579

Adding a key value pair in a dictionary inside a dictionary

I have a dictionary < string,object > which has a mapping of a string and a dictionary < string,int >. How do I add a key value pair in the inside dictionary < 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);

So now the dict has a dictionary mapped with a string.Now I want to separately add values to the insideDict. I tried

dict["blah"].Add();

Where am I going wrong?

Upvotes: 5

Views: 24610

Answers (3)

Rahul
Rahul

Reputation: 77846

Something like below

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

(OR) if you already have defined the inner dictionary then

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

Per your comment tried this but screwed up somewhere

You didn't got it cause of your below line where you forgot to cast the inner dictionary value to Dictionary<string, int> since your outer dictionary value is object. You should rather have your outer dictionary declared strongly typed.

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

Upvotes: 5

Gilad Green
Gilad Green

Reputation: 37299

Do you mean something like this?

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

Upvotes: 9

Paul Swetz
Paul Swetz

Reputation: 2254

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

Replace the TValue with your value type.

Upvotes: 0

Related Questions