我有2個屬性比較平等的2個Properties對象
public class SampleClass
{
public string Name { get; set; }
public List<Component> Components { get; set; }
}
而另一類是持有一些字符串屬性的類。
public class Component
{
public string Name { get; set; }
public string Age{ get; set; }
}
我已創建並添加到列表這個類的一個實例
SampleClass classWithValues = new SampleClass();
var listComponent = new List<Component>();
listComponent.add(new Component{Name = "Random string",Age = "31"})
classWithValues.Components = listComponent;
classWithValues.Name = "TestName"
var listWithObjectClass = new List<SampleClass>();
listWithObjectClass.add(classWithValues);
然後,我做出了SampleClass類的新實例,並添加完全相同的值到屬性:
SampleClass classWithValues1 = new SampleClass();
var listComponent1 = new List<Component>();
listComponent1.add(new Component{Name = "Random string",Age = "31"})
classWithValues1.Components = listComponent1;
classWithValues1.Name = "TestName";
這裏是奇怪的部分: 如果我比較列表中的屬性名稱與Sample類的第二個實例與同一類:
bool alreadyExists = listWithObjectClass.Any(x => x.Name == classWithValues1 .Name);
結果是真實的,但如果 我比較列表屬性
bool alreadyExists = listWithObjectClass.Any(x => x.Components == classWithValues1.Components);
結果是假的?! 有人可以提供一些關於這種行爲的信息。
還有其他選項,例如序列化兩個對象並比較結果字符串或使用反射來比較對象屬性 –