0

Dictionary<Key, IList<Days>> days需要在 foreach 循环中进行迭代,以便将其转换为Dictionary<Key, IList<string>> days2; 我尝试使用以下但编译器不喜欢它(无法转换为元素类型。

foreach(KeyValuePair<string,IList<Days>> kvp in days)
{
//do stuff
}

您如何通过其值为列表的字典键值对进行 foreach?如果可能的话,我会尽量避免使用 linq 以使其更具可读性。

4

3 回答 3

4

您可以使用隐式类型的局部变量,而不是精确指定类型。它是使用var关键字完成的:

foreach (var kvp in dict)
{

}

您还可以使用 LINQ 来获得所需Dictionary<Key, IList<string>>

Dictionary<Key, IList<string>> dict2 =
    dict.ToDictionary(x => x.Key,
                      x => (IList<String>)x.Value.Select(y => y.ToString()).ToList());

将简单ToString()调用替换Daysstring您想要使用的转换。

于 2013-09-30T19:57:19.683 回答
2

您将字典定义为Dictionary<Key, IList<Days>>这意味着您应该在 foreach 循环中匹配这些类型:

foreach (KeyValuePair<Key, IList<Days>> kvp in days)
{
    foreach (Days day in kvp.Value)
    {
        // Convert individual elements
    }
}

您的另一个选择是使用ToDictionary扩展方法进行转换:

days.ToDictionary(d => d.Key, d => Value.Select(d => d.ToString()));
于 2013-09-30T19:56:51.483 回答
1
foreach(KeyValuePair<string,IList<Days>> kvp in days)
{
    IList<Days> dayList = kvp.Value;
    // TODO: convert and insert in new dictionary
}
于 2013-09-30T19:59:07.377 回答