gpt4 book ai didi

c# - 比较 C# 中的两个字典

转载 作者:行者123 更新时间:2023-12-04 03:05:22 24 4
gpt4 key购买 nike

我有两个字典,结构和顺序都相同(一个应该是另一个的精确复制):Dictionary<int, ICustomInterface>我想使用 SequenceEqual<> 检查它们是否相等

首先,我将第一个字典转换为 XML,然后将其读回以重新创建第二个字典。在初步检查时,它们都是相同的。 ICustomeInterface每个对象都正确覆盖 Equals 方法。为了检查这一点,我遍历了两个字典的元素并进行了比较。他们都是平等的。

但是当我调用 SequenceEqual : dictionary1.SequenceEqual(dictionary2);它返回 false 和 ICustomInterface 的 Equals 方法对象永远不会被调用,它总是返回 false。但是,如果我这样做:

for (i = 0; i < firstDictionary.Count; i++)
firstDictionary[i].SequenceEqual(otherSub.ItemSequence[i]);

一切都按预期工作,并且每行都返回 true。那么,当我简单地在字典本身上调用 SequnceEqual 时会发生什么?

最佳答案

“发生了什么”是在比较KeyValuePair两个字典的条目,按顺序排列。字典本质上是无序的——你不应该依赖任何关于条目从它们中出来的顺序。如果您使用:

firstDictionary.OrderBy(pair => pair.Key)
.SequenceEqual(secondDictionary.OrderBy(pair => pair.Key))

我怀疑你会找到匹配的。比较它们是一种非常不愉快的方式:)

关于c# - 比较 C# 中的两个字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6753196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com