两个可枚举对象之间的相等性

28

我有两个枚举,它们引用的元素完全相同,但是为什么Equals不会返回true。

另外一个问题,下面的代码可以比较每个元素,但肯定有更优雅的方法。

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;

可能是 https://dev59.com/XHNA5IYBdhLWcg3wpvtg 的重复问题。 - Berryl
可能是重复的问题:在C#中有没有比较集合的内置方法? - nawfal
2个回答

53

看一下Enumerable.SequenceEqual方法

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

根据数据类型,你可能还需要使用接受 IEqualityComparer 参数以定义自定义比较方法的重载方法


17

.Equals比较的是可枚举对象的引用,而不是它们所包含的元素


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接