使用Linq从列表字典创建映射
给定 这可以用Linq完成吗 关于将相同的数据结构展平,也有一个非常类似的问题 但是,这并不维护与字典键的关系 我复习了a(相关问题中使用的方法),但看不到与关键相关的方法。听起来像是你想要的:使用Linq从列表字典创建映射,linq,linq-to-objects,Linq,Linq To Objects,给定 这可以用Linq完成吗 关于将相同的数据结构展平,也有一个非常类似的问题 但是,这并不维护与字典键的关系 我复习了a(相关问题中使用的方法),但看不到与关键相关的方法。听起来像是你想要的: Dictionary<string, string> map = new Dictionary<string,string>(); foreach (KeyValuePair<string, List<string>> kvp in 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);
}
}
请注意,
SelectMany
的第二个参数在这里看起来有点奇怪,因为原始键成为最终字典中的值,反之亦然。@EricJ.:它应该仍然有效,但编辑的版本应该更清晰一些。
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);
}
}
var query = myDict.SelectMany(pair => pair.Value,
(pair, v) => new { Key = v, Value = pair.Key })
.ToDictionary(pair => pair.Key, pair => pair.Value);