我有两个具有完全相同的引用元素的可枚举对象,想知道为什么Equals会不正确。

作为附带的问题,下面的代码可以比较每个元素,但是必须有一种更优雅的方法

var other = (ActivityService) obj;
if (!AllAccounts.Count().Equals(other.AllAccounts.Count())) return false;
for (int i = 0; i < AllAccounts.Count(); i++) {
    if (!AllAccounts.ElementAt(i).Equals(other.AllAccounts.ElementAt(i))) {
        return false;
    }
}
return true;

最佳答案

看看Enumerable.SequenceEqual method

bool result = AllAccounts.SequenceEqual(other.AllAccounts);

根据数据类型,您可能还需要使用接受IEqualityCompareroverloaded method定义自定义比较方法。

关于c# - 两个枚举之间的相等性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2564983/

10-11 16:21