List
のオブジェクトがlistA
とlistB
の2つあり、コレクションにはUser
オブジェクトが含まれています。両方のリストにあるオブジェクトを特定のコンパレータに基づいて取得する
各User
オブジェクトのプロパティはID
です。
ID
プロパティに基づいて、listA
とlistB
の両方に存在するユーザーのリストを取得したいとします。ここで
は、これまでの私のコードです:
listA.Where(a => listB.Any(b => b.ID == a.ID));
はこれを行うには良い方法はありますか?特にlistB
が大きい場合は、非効率的なように感じます。
User
オブジェクトにはIEquatable
が実装されていません。
はIDがユニークか?おそらくIDとしてキーとして代わりにHashSetを使用することができます。 – Equalsk
IDは一意の 'Guid'オブジェクトです。 2つの 'User'オブジェクトが同じ' ID'を持っていれば、それらは同じです(ただし、直接等価ではありません)。 –
次に、IDをキーとして2つのHashSetを作成し、表示したメソッドを使用してキーを比較します。あるいは、他の人が「Intersect()」が良いかもしれないと指摘しています。これはコメントだけをテストしていない。 – Equalsk