同じクラスのオブジェクトを含む2つのリストを比較する必要がありますが、違いを確認するためにすべてのプロパティを使用する必要はありません。例えば。 Id(主キー)プロパティは使用しないでください。C#2つの一致リストの相違点を取得
は私の例クラス:私は上記でやりたい何
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特性上の2つのリストを一致させることです。次にNameプロパティがoldRからnewRに変更されているかどうか確認したいと思います。
基本的には、まずTest1をデータベースから削除し、Test6を追加し、Test4をTest43に更新する必要があります。私は私の本当のクラスは20の特性を持っていることを言及する必要があり :
は、それがローミングサービス
はEDITなります願っています。私はlinqを使って比較する方法を今、すべて指定することなくしたいと思いますか?そして、おそらく、私が比較したくないIdプロパティを除外してください。
どうすればいいですか?
linqクエリを試してください。それはあなたが簡単にオブジェクトを比較するのに役立ちます –
私の本当のクラスは+20のプロパティを持っていることを言及する必要があります。私はlinqを使って比較する方法を今、すべて指定することなくしたいと思いますか?そして、おそらく、私が比較したくないIdプロパティを除外する – user1281991
リストVMIDを結合するために左外部結合を使用します。 msdn:https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b – jdweng