2017-10-12 172 views
0

我有一個關於如何從我的Dictionary<string, List<object>>獲取值的問題,我嘗試了所有在谷歌中找到的示例,但仍然無法獲得可讀的值.... 。C#從Dictionary獲取值<string,List <object>>

所以,這裏是代碼:

List<object> listValues = new List<object>(); 
listValues.Add(risk); 
listValues.Add(validFrom); 
listValues.Add(effectiveDate); 

Dictionary<string, List<object>> dic = new Dictionary<string, List<object>>(); 
dic.Add(nameOfInsuredObject, listValues); 

foreach (object value in dic.Values) 
{ 
    System.Console.WriteLine(value); 
} 

我可以從字典鍵,但與得到的值,我現在stucked .... 這裏是這段代碼的結果:

Key => testInsObj 
Values => System.Collections.Generic.List`1[System.Object] 

那麼任何人都可以幫助我嗎?我是C#新手,所以也許這對其他人來說很容易。

+1

好像你應該創建一個自定義類型,而不是'List '獲取值有什麼問題?看起來很好 –

+0

你的預期產出是什麼?即你認爲「可讀」是什麼?字典值是一個列表。如果您想要列表中的值,請遍歷列表並打印值。 – itsme86

+1

你知道'dic.Values'中的每個'value'在一個對象列表中 - 'List ''?那麼應該在你的想象中應該列出一個'List '的'.ToString()'什麼? –

回答

1

好像你正在尋找寫作列表的值是這樣的:

foreach (var value in dic.Values) 
{ 
    value.ForEach(Console.WriteLine); 
} 

其實詞典中的每個元素是<string, List<Object>>。所以,當你想把Value的一部分寫到控制檯時,你需要一個for循環來編寫List<object>的每個元素。

+0

yeap,那幫助,謝謝!!!!!! – vladimir

+0

僅供您參考'value.ForEach(Console.WriteLine);'相當於'value.ForEach(x => Console.WriteLine(x));'如果它對您更具可讀性: –

+0

它也等同於'foreach(var x in value){Console.WriteLine(x); }'如果'.ForEach'方法令你感到困惑。 –

1

新C#用戶如何訪問字典令人困惑。

當您在字典上執行foreach時,您會得到KeyValuePair<TKey, TValue>。現在這個KeyValuePair<TKey, TValue>,有2個屬性KeyValuePair.KeyKeyValuePair.Value,代表存儲在字典中的KeyValue

而且,你的情況ValueList<T>,這意味着這樣做就可以了Console.WriteLine不會打印整個List<T>(如一些人期望的那樣),但只是一些參考的字符串。您將不得不在列表上「循環」以打印各個元素。不用說,根據您想要對List<T>中的元素所做的操作,您可以使用LINQ或其他一些常見的C#語言。

foreach (var value in dic) { 
    Console.WriteLine(value.Key); 
    foreach (var item in value.Value) 
     Console.WriteLine(item); 
} 
相關問題