鉴于
Dictionary<string, List<string>> myDict = new Dictionary<string, List<string>>()
{
"Apples", new List<string>() { "Green", "Red" },
"Grapefruits", new List<string>() { "Sweet", "Tart" },
}
我希望创建一个从子项到父项的映射,例如:
"Green" => "Apples"
在我的特定用例中,子字符串将是全局唯一的(例如,不必担心绿色的葡萄柚),因此可以将映射设置为 Dictionary<string,string>
。
通过传统的迭代 myDict
可以相当容易地完成它。
Dictionary<string, string> map = new Dictionary<string,string>();
foreach (KeyValuePair<string, List<string>> kvp in myDict)
{
foreach (string name in kvp.Value)
{
map.Add(name, kvp.Key);
}
}
能用Linq做到吗?
关于仅展开相同数据结构的问题非常类似。
但是,这不会保持与字典键的关系。
我查阅了有关SelectMany的很好的可视化教程(相关问题中使用的方法),但没有找到关联键的方法。