2 つのリストの違いを比較します
カスタム オブジェクトを含む 2 つのリストを扱う場合、多くの場合、最初のリスト内で 2 番目のリストには存在しない一意の要素を識別する必要があります。この問題は、.Except()
メソッドを使用して効率的に解決できます。
たとえば、2 つのリスト list1
と list2
について考えてみましょう。どちらにも CustomObject
のインスタンスが含まれています。 list1
に固有の要素を抽出するには、次のコードを使用するだけです:
<code class="language-csharp">var list3 = list1.Except(list2).ToList();</code>
この単純なアプローチでは、CustomObject
型が Equals()
メソッドと GetHashCode()
メソッドをオーバーライドし、正しい等価性とハッシュの比較が可能であることを前提としています。
ただし、特定の属性 (ID など) に基づくなど、より詳細な比較が必要な場合は、カスタムの等価コンパレーターを実装する必要があります。以下に示すように、これには IEqualityComparer<T>
インターフェースを実装するクラスを定義する必要があります。
<code class="language-csharp">public class IdComparer : IEqualityComparer<CustomObject> { public int GetHashCode(CustomObject co) { return co.Id.GetHashCode(); } public bool Equals(CustomObject x1, CustomObject x2) { return x1.Id == x2.Id; } }</code>
<code class="language-csharp">var list3 = list1.Except(list2, new IdComparer()).ToList();</code>
句を使用する代替戦略がより適切です: where
以上があるリスト内で別のリストにはない固有の要素を効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。