我有一个关于如何从我的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#的新手,所以也许这对其他人来说很简单......
答案 0 :(得分:1)
对于新的C#用户来说,如何访问字典会让人感到困惑。
当您在字典上执行foreach
时,您会获得KeyValuePair<TKey, TValue>
。现在这个KeyValuePair<TKey, TValue>
有2个属性KeyValuePair.Key
和KeyValuePair.Value
,代表字典中存储的Key
和Value
。
此外,您的案例中的Value
为List<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}}的每个元素。