2017-10-12 116 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); 
} 
相关问题