2
解释鉴于从字典创建映射使用LINQ
Dictionary<string, List<string>> myDict = new Dictionary<string, List<string>>()
{
"Apples", new List<string>() { "Green", "Red" },
"Grapefruits", new List<string>() { "Sweet", "Tart" },
}
的我希望创建从孩子的映射到父,例如
“绿色” =>“苹果”
在我的具体使用情况,孩子字符串将是全球唯一的(例如,没有绿柚子担心),这样的映射可能是一个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来完成吗?
有大约只是压扁相同的数据结构
Flatten a C# Dictionary of Lists with Linq
然而,并不维持到字典中键的关系非常类似的问题。
我回顾了一个nice visual tutorial on SelectMany(在相关问题中使用的方法),但看不到关联密钥的方法。
我在编辑之前感到困惑:-) –
@EricJ .:它应该仍然有效,但编辑后的版本应该稍微清晰。 –
我说我很困惑,不是你错了:-D –