C#从Dictionary <string,list <object =“”>&gt;获取值

时间:2017-10-12 16:07:33

标签: c# dictionary

我有一个关于如何从我的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);
}

我可以从字典中获取密钥,但随着获得价值我现在被困住了.... 以下是此代码的结果:

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

那么有人可以帮助我吗?我是C#的新手,所以也许这对其他人来说很简单......

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:1)

您似乎正在寻找以这种方式编写列表的值:

<string, List<Object>>

实际上,词典的每个元素都是Value。因此,当您想将List<object>部分写入控制台时,您需要一个for循环来编写{{1}}的每个元素。