如何循环访问其值字段在 c# 中为 list 的字典

本文关键字:字段 中为 list 字典 何循环 循环 访问 | 更新日期: 2023-09-27 18:33:25

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

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

如何通过字典键值对,其值为列表?如果可能的话,我试图避免使用 linq 来使其更具可读性。

如何循环访问其值字段在 c# 中为 list 的字典

可以使用隐式类型的局部变量,而不是精确地指定类型。它是使用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要使用的转换。

您将字典定义为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()));
foreach(KeyValuePair<string,IList<Days>> kvp in days)
{
    IList<Days> dayList = kvp.Value;
    // TODO: convert and insert in new dictionary
}