2016-09-28 22 views
1

我有一個動態生成的字典。在字典中,對於單個密鑰,有多個值。我正嘗試訪問這些多個值中的一個值。我的代碼到目前爲止:如何訪問C#中的動態字典中的值?

 var result = new Dictionary<string, object>(); 
     var dictionary = deserialisedResult as IDictionary<string, object>; 
     foreach (var item in dictionary) 
     { 
      result.Add(item.Key, item.Value); 
     } 
     object o = result; 
     string[] names = o.GetType().GetProperties().Select(p => p.Name).ToArray(); 
     foreach (var prop in names) 
     { 
      object propValue = o.GetType().GetProperty(prop).GetValue(o, null); 
      var value = propValue.GetValue(o,null); 
     } 

但這是行不通的。

我需要獲取'資源'的值。

當我添加的手錶,我把它嵌套這樣:

enter image description here

+2

首先,看起來像你反序列化一個有效載荷/一些東西來得到這本詞典。很高興看到第一手樣品。當你說一個鍵有多個值時,你的意思是它是一個字典,其中的值列表分配給一個單一的鍵? –

+0

也許告訴我們期望的輸出是什麼,你現在得到的錯誤或輸出是什麼?這隻手錶還不夠窗口..至少對我來說。 – kuskmen

+1

我真的需要更多的信息來處理這個,如果它是附加到一個鍵的值的列表序列化爲IDictionary <字符串,列表>並且可能對你更好。 如果您查看對象o中的屬性,這裏本質上是一本字典,您實際上正在瀏覽實例類型所具有的每個屬性,而不是字典的關鍵字。 –

回答

1

行之後就出在這裏造成的問題:

string[] names = o.GetType().GetProperties().Select(p => p.Name).ToArray();

GetType()Object基地班級類型不會產生Type,這可以p提供您正在尋找的PropertyInfo[],甚至您正在嘗試運行Dictionary<string,object>類型,但無論如何都沒有幫助查找相關信息的屬性。對於它的Type將永遠是Dictionary

你需要的是從字典獲取領取鑰匙並用它們來獲取存儲在字典中的值

foreach (var key in result.Keys) 
{ 
    var value = result[key]; 
} 

解決方案基於代碼的前提在這個問題中,我不確定你是否有進一步的需求