2 つのリストを比較して、2 つのリストのどのプロパティを比較するかを正確に指定せずに、2 つのリストに違いがあるかどうかを確認できるメソッドを作成する必要があります。たとえば、次のようには言えません。
var exceptList = list1.Where (r => r.Name !list2.Any( r2.Name == r.Name ))
太字の部分は動的にする必要があるため、さまざまな種類のリストにメソッドを再利用できます。次の例が機能しないことはわかっていますが、同様のものが必要です。
var r = myLeftList.Where(p => !myRighttList.Any(p2 =>
p2.GetType().GetProperties().GetValue(myLeftList.IndexOf(p2)) ==
p.GetType().GetProperties().GetValue(myRighttList.IndexOf(p))));