当值是列表时,如何从字典中获取Key,Value

时间:2015-06-19 19:25:57

标签: c# dictionary key keyvaluepair

所以基本上我有一个字典,我有一个键,然后值是一个包含字符串的列表..所以例如..

{"key1", list1}
list1 = [Value 1 Value2, Value3]

我有多个键,因此有列表的值。 我想显示它以便显示

Key1: Value1
Key1: Value2
Key1: Value3

所以我希望能够显示Key和值。但我不确定如何做到这一点。

foreach (var value in FoodCategory_Item.Values)
{
    foreach(var item in value)
    {
        Console.WriteLine("Value of the Dictionary Item is: {0}", item);
    }
}

这就是我到目前为止所做的,即迭代值,我知道该怎么做,但我不知道如何在那里获取键值,因为它将首先迭代所有值,然后遍历关键项..

3 个答案:

答案 0 :(得分:2)

这应该有效:

foreach (KeyValuePair<string, List<string>> kvp in FoodCategory_Item)
{
    foreach (string item in kvp.Value)
    {
        Console.WriteLine ("{0}: {1}", kvp.Key, item);
    }
}

Dictionary实现IEnumerable<KeyValuePair<TKey, TValue>>,因此您可以直接迭代它。

答案 1 :(得分:2)

如果查看documentation for Dictionary,您会注意到它实现了接口

IEnumerable<KeyValuePair<TKey, TValue>>

因此,您可以执行以下操作:

foreach(KeyValuePair<TKeyType, TValueType> kvp in dictionary)
{
    foreach(var item in kvp.Value)
    {
        Console.WriteLine("{0}: {1}", kvp.Key, item);
    }
}

在此处给出的示例代码中,将 TKeyType 替换为字典中使用的键的实际类型,并将 TValueType 替换为用于值的列表类型字典。

答案 2 :(得分:1)

Dictionary是可枚举的,所以迭代:

foreach (var kvp in FoodCategory_Item)
{
     foreach(var item in kvp.Value)
     {
         Console.WriteLine("Value of the Dictionary Key {0} is: {1}", kvp.Key ,item);
     }
}