C# 比较两个集合
我寻找我的问题的解决方案,但我想我再次尝试了错误的关键字。 我想比较两个可观察到的集合。 Equals和SequenceEqual不起作用 我写了一些使用反射的比较方法: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
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)
。可能重复的