C# 比较两个集合

C# 比较两个集合,c#,reflection,collections,compare,observablecollection,C#,Reflection,Collections,Compare,Observablecollection,我寻找我的问题的解决方案,但我想我再次尝试了错误的关键字。 我想比较两个可观察到的集合。 Equals和SequenceEqual不起作用 我写了一些使用反射的比较方法: var properties = typeof(MyClass).GetProperties(); for (var i = 0; i < list1.Count(); i++) { foreach (var property in properties) { var value1 = p

我寻找我的问题的解决方案,但我想我再次尝试了错误的关键字。 我想比较两个可观察到的集合。 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;
        }
    }
}
var properties=typeof(MyClass).GetProperties();
对于(var i=0;i
value1和value2都是“true”,但它会跳转到return语句中

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

value1
value2
被装箱
object
s.
=
将始终通过引用对它们进行比较

相反,您应该检查
if(等于(value1,value2))
,它将按值对它们进行比较。
具体地说,在适当的空检查之后,它将调用重写的
value1.Equals(value2)

可能重复的