比较对象属性

时间:2016-11-24 19:17:57

标签: c#

我有2个对象列表,我需要知道是否有任何属性发生了变化。 这就是我所拥有的:

public class Person
{
    public int PersonId { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
}

然后,我有2个Person列表。

var list1 = new List<Person>();
var list2 = new List<Person>();

我需要知道list1list2是否包含一些Person个对象,请确保属性的值相同,并通过PersonId进行比较

1 个答案:

答案 0 :(得分:0)

我确信有不同的方法可以做到这一点,但我建议的解决方案如下。

var list1 = new List<Person>
{
    new Person()
    {
        PersonId = 123,
        Name = "Tom",
        Email = "tom@x.com"
    }
};


var list2 = new List<Person>
{
    new Person()
    {
        PersonId = 123,
        Name = "Tom",
        Email = "tom@x.com"
    }
};

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> 

键值对,其中字符串是Person的ID并且有两个Dictionary键,比较它是否存在于另一个Dictionary中,它不会遍历整个Dictionary,这使得它不那么重

希望有所帮助