2016-11-24 129 views
-1

我有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>(); 

我需要知道,如果list1list2包含一些Person對象,確保該屬性的值是相同的,通過PersonId比較。

+1

你有沒有嘗試過嗎?你看過linq嗎?這[[加入]](http://stackoverflow.com/documentation/c%23/68/linq-queries/2994/joins-inner-left-right-cross-and-full-outer-joins#t=201611241921121673108 )文檔是一個很好的開始。也只是使用'where'可以做 –

+0

是的,我的問題是指同時比較所有屬性 –

+1

因此,再次請顯示您已經嘗試過...我們可以幫助您更正它,但不會爲您寫入 –

回答

0

我確定有不同的方法來做到這一點,但我建議的解決方案如下。

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> 

鍵值對,其中的字符串是人的身份證,有兩個字典比較關鍵看它是否在其他詞典存在嘗試,它不重複通過整個詞典,使其不那麼重

希望它有幫助