比较两个词典中的键



我正在尝试比较两个词典,该程序是在C#Visual Studio 2010中编写的。

Dictionary<int, string> members1 = new Dictionaries<int, string>{
    {1, "adam"},
    {2, "bob"},
    {3, "cameron"}
}
Dictionary<int, string> members2 = new Dictionaries<int, string>{
    {1, "adam"},
    {2, "bill"},
    {4, "dave"}
}

我想找到相同的ID(键),而名称(值)是否相同。

我一直在搜索并找到了IntersectExcept,但是我认为它不太喜欢它。

在上面的示例中,如果我调用Intersect函数,我希望它返回List<int>{1, 2}

如果我称members1.Except(members2)之类的东西,我希望它返回

Dictionary<int, string> intersectMembers{
    {1, "adam"},
}

我想到的解决方案是编写2个for-loops并使用dictionary.Contains(key)来获得我想要的结果。

是否有更直截了当的方法?

谢谢

如果您想要" common dictionary "返回,我相信您可以这样做:

   var intersectMembers =  members1.Keys.Intersect(members2.Keys)
                                  .ToDictionary(t => t, t => members1[t]);

or,替代

   var intersectMembers =  members1.Where(x => members2.ContainsKey(x.Key))
                             .ToDictionary(x => x.Key, x => x.Value);

但是,如果您想要返回的"常见 list ",则Sergey是正确的,您可以实现他的答案。

 var commonKeys = members1.Keys.Intersect(members2.Keys); // { 1, 2 }

那将返回 IEnumerable<int>,但是如果要列表,则可以致电ToList()

相关内容

  • 没有找到相关文章

最新更新