如何循环访问其值字段在 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 来使其更具可读性。
可以使用隐式类型的局部变量,而不是精确地指定类型。它是使用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()
调用替换为Days
以string
要使用的转换。
您将字典定义为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
}