比较对象属性
问题描述:
我有2个对象列表,我需要知道是否有任何属性发生了变化。 以下是我有:比较对象属性
public class Person
{
public int PersonId { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}
然后,我有Person
2名列表。
var list1 = new List<Person>();
var list2 = new List<Person>();
我需要知道,如果list1
和list2
包含一些Person
对象,确保该属性的值是相同的,通过PersonId
比较。
答
我确定有不同的方法来做到这一点,但我建议的解决方案如下。
var list1 = new List<Person>
{
new Person()
{
PersonId = 123,
Name = "Tom",
Email = "[email protected]"
}
};
var list2 = new List<Person>
{
new Person()
{
PersonId = 123,
Name = "Tom",
Email = "[email protected]"
}
};
var count = list1.Count;
if(list1.Count.Equals(list2.Count))
{
var i;
for(i=0; i< list1.Count; i++)
{
if(!list1[i].PersonId.Equals(list2[i]))
{
//DO somthing they lists are NOT SAME
//One of the Person object contain different ID
}
}
}
else
{
//DO somthing, list count is different..
}
我也建议使用
Dictionary<string, Person>
键值对,其中的字符串是人的身份证,有两个字典比较关键看它是否在其他词典存在尝试,它不重复通过整个词典,使其不那么重
希望它有帮助
你有没有尝试过吗?你看过linq吗?这[[加入]](http://stackoverflow.com/documentation/c%23/68/linq-queries/2994/joins-inner-left-right-cross-and-full-outer-joins#t=201611241921121673108 )文档是一个很好的开始。也只是使用'where'可以做 –
是的,我的问题是指同时比较所有属性 –
因此,再次请显示您已经尝试过...我们可以帮助您更正它,但不会为您写入 –