0

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))));
4

1 に答える 1

0

Except拡張メソッドを使用できます。

msdnを参照

その点を意識して:

カスタム データ型のオブジェクトのシーケンスを比較する場合は、クラスに IEqualityComparer ジェネリック インターフェイスを実装する必要があります。

于 2013-05-13T07:09:25.877 に答える