检查一个词典中的所有条目都在另一个词典中

时间:2016-03-31 09:07:29

标签: c# compare

我有两个Dictionarys A& B,我想知道A中的所有条目是否都存在于B.在过去,我使用以下内容比较了列表:

var set1 = new HashSet<String>(list1);
var set2 = new HashSet<String>(list2);

return set1.SetEquals(set2);

我想要做的就是使用以下方法循环遍历字典A中的每个值:

dictA.TryGetValue(dictBvalue, out item)

如果值不是那么,这将在项目var上返回null,但这似乎有点长篇大论。

有比较快速有效的词典比较方法吗?

感谢。

3 个答案:

答案 0 :(得分:2)

您可以使用All扩展程序并执行此操作。

var allexist = list1.All(x=> list2.ContainsKey(x.Key) && list2[x.Key] == x.Value)

答案 1 :(得分:0)

如果你想遍历每个值

,这里是解决方案
Dictionary<string, string> dictA = new Dictionary<string, string>();
Dictionary<string, string> dictB = new Dictionary<string, string>();
bool allexist = true;

foreach (var itemA in dictA)
{
    if (!dictB.ContainsKey(itemA.Key))
    {
        allexist = false;
    }
}

答案 2 :(得分:0)

实际上,您要求使用比较字典的方法,但您的代码示例引用了不同的HashSet。

对于HashSet,您可以使用IsSubsetOfSetEquals方法。

要比较词典,您可以使用DictionaryEquals method from this answer