2012-12-25 45 views
2

我搜索了我的问题的解决方案,但我想我再次尝试错误的关键字。 我想比较两个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; 
     } 
    } 
} 

值1和值2都为“真”,但它跳进return语句:

我使用反射写了某种比较方法。

Ofcourse我可以用MyClass的每个属性手动执行它,但这并不是很舒服。 希望你能告诉我我的错误在哪里。

+0

可能重复[比较两个集合的相等](http://stackoverflow.com/questions/50098/comparing-two-collections-for-equality) – nathanchere

回答

3

value1 and value2 are boxed object s。
==将始终通过引用来比较它们。

相反,你应该检查if (Equals(value1, value2)),它会按价值比较它们。
具体来说,它会在适当的空检查之后调用覆盖的value1.Equals(value2)

+0

这对我有效。谢谢。 – Lucas