我需要比較兩個包含同一類的對象的列表,但不是每個屬性都應該用於檢查差異。例如。不應使用Id(主鍵)屬性。C#在兩個匹配列表中獲得差異
我的例子類:
class MyClass
{
public System.Nullable<int> Id { get; set; }
public int VMId { get; set; }
public string Name { get; set; }
}
var oldR = new List<MyClass>();
oldR.Add(new MyClass() { Id = 1, VMId = 11, Name = "Test1" });
oldR.Add(new MyClass() { Id = 2, VMId = 22, Name = "Test2" });
oldR.Add(new MyClass() { Id = 3, VMId = 33, Name = "Test3" });
oldR.Add(new MyClass() { Id = 4, VMId = 44, Name = "Test4" });
oldR.Add(new MyClass() { Id = 5, VMId = 55, Name = "Test5" });
var newR = new List<MyClass>();
newR.Add(new MyClass() { Id = null, VMId = 22, Name = "Test2" });
newR.Add(new MyClass() { Id = null, VMId = 33, Name = "Test3" });
newR.Add(new MyClass() { Id = null, VMId = 44, Name = "Test43" });
newR.Add(new MyClass() { Id = null, VMId = 55, Name = "Test5" });
newR.Add(new MyClass() { Id = null, VMId = 66, Name = "Test6" });
我想上述的事情,是兩個列表匹配的VMID財產。接下來,我想檢查Name屬性是否從oldR更改爲newR。
基本上我想現在,Test1應該從數據庫中刪除,Test6應該被添加,並且Test4應該被更新到Test43。
希望它讓SENCE
編輯: 我要指出,我真正的類有+20的屬性。我想現在如何使用linq進行比較,而無需全部指定它們?也許只是排除我不想比較的Id屬性
我該如何做到這一點?
嘗試linq查詢。這可能會幫助你輕鬆地比較對象 –
我應該提及我的真實課程有+20個屬性。我想現在如何使用linq進行比較,而無需全部指定它們?也許只是排除我不想比較的Id屬性 – user1281991
我會使用左外連接來組合列表VMID。看到msdn:https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b – jdweng