Fio*_*ite 5 c# linq merge dictionary
这与有关如何在 C# 中合并两个字典的问题有点相关。提供了一个优雅的 Linq 解决方案,很酷。
但是,这个问题与Dictionary<Object1, Object2>,
我有一本字典的值有关List<Object2>.
我正在寻找将 aDictionary<Object1, List<Object2>>,
与以下要求合并的解决方案:
List<Object2>
则应合并它们的列表。您最终会得到一个带有共享密钥的新键值对,以及来自两个字典的组合列表。List<Object2>
列表应该成为值,反之亦然。这在 Linq 中可能是不可能的,或者可能值得用 for 循环等直接写出来,但是有一个优雅的解决方案会很好。
我建议创建您自己的扩展方法。它将更加高效并且更容易修改。
public static void MergeDictionaries<OBJ1, OBJ2>(this IDictionary<OBJ1, List<OBJ2>> dict1, IDictionary<OBJ1, List<OBJ2>> dict2)
{
foreach (var kvp2 in dict2)
{
// If the dictionary already contains the key then merge them
if (dict1.ContainsKey(kvp2.Key))
{
dict1[kvp2.Key].AddRange(kvp2.Value);
continue;
}
dict1.Add(kvp2);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8988 次 |
最近记录: |