比较两个集合

时间:2012-12-25 04:11:21

标签: c# reflection collections compare observablecollection

我搜索了我的问题的解决方案,但我想我再次尝试错误的关键字。 我想比较两个ObservableCollections。 Equals和SequenceEqual不起作用。

我用反射写了一些比较方法:

var properties = typeof(MyClass).GetProperties();
for (var i = 0; i < list1.Count(); i++)
{
    foreach (var property in properties)
    {
        var value1 = property.GetValue(list1[i]);
        var value2 = property.GetValue(list2[i]);

        if (value1 != value2)
        {
            return false;
        }
    }
}

value1和value2都是'true'但跳转到return语句。

当然,我可以使用MyClass的每个属性手动完成,但这并不是很舒服。 希望你能告诉我我的错误在哪里。

1 个答案:

答案 0 :(得分:3)

value1value2装箱object s ==将始终通过引用对其进行比较。

相反,您应该检查if (Equals(value1, value2)),然后按值对它们进行比较 具体来说,在适当的空检查后,它将调用被覆盖的value1.Equals(value2)