2014-03-05 121 views
0

我想訪問嵌套在另一個字典內的字典。訪問字典裏面的字典

我寫的代碼是:

foreach (var entry in source) 
{ 
    int i = 0; 
    str = str + i + ": key: " + entry.Key + "; value = " + entry.Value +"; "; 
    // do something with entry.Value or entry.Key 
} 

和用於一些元件的值是System.Collections.Generic.Dictionary`2 [System.String,System.Object的]

我想當內部值具有給定值時訪問該字典,如「部門」。

任何想法如何做到這一點?

+0

源的數據類型是什麼? – danish

+2

「Key」是字典還是「Value」?使用字典作爲一個關鍵似乎很奇怪。 –

+1

如果你有一個嵌套集合,你需要2個循環 – Jonesopolis

回答

3

我想訪問該字典時內鍵有一個給定 值,如「部門」

假設你有一個這樣的詞典:

var source = new Dictionary<string, Dictionary<String, Object>>(); 

foreach (var outerEntry in source) 
{ 
    foreach (var innerEntry in outerEntry.Value) 
    { 
     if(innerEntry.Key == "Department") 
     { 
      // do something 
      Console.WriteLine("Key:{0} Value:{1}", innerEntry.Key, innerEntry.Value); 
     } 
    } 
} 
+0

我得到一個錯誤,說foreach語句不能對'object'類型的變量進行操作,因爲'object'不包含'GetEnumerator'的公共定義。 – MaPi

+0

@ user1648371:你可以看到我正在使用什麼樣的字典,你在用什麼? –

+0

它顯示爲一個字符串,但是當我打印該鍵時,它說Dictionary MaPi

0

如果Value是一本字典,可以循環使用底層的字典鍵:

foreach (var entry in source) 
{ 
    int i = 0; 
    str = str + i + ": key: " + entry.Key + "; value = " 
    if (entry.Value is IDictionary) 
    } 
     str = str + " { "; 
     foreach (var innerentry in (entry.Key as IDictionary)) 
     { 
      str = str + innerentry.Key + "; value = " + innerentry.Value +"; "; 
     } 
     str = str + " } "; 
    } 
    else 
     str = str + entry.Value +"; "; 
    // do something with entry.Value or entry.Key 
}