HashSet 操作と LINQ セット操作

このトピックでは、HashSet<T> 操作と Language-Integrated Query (LINQ) セット操作を比較します。

LINQ セット操作

LINQ を使用すると、IEnumerable インターフェイスまたは IQueryable インターフェイスを実装するデータ ソースに対する一部のセット操作にアクセスできます。 これには配列とコレクションが含まれます。

LINQ が提供するセット操作は次のとおりです。

  • Distinct

  • Union

  • Intersect

  • Except

LINQ の詳細については、「統合言語クエリ (LINQ: Language-Integrated Query)」および「Parallel LINQ (PLINQ)」を参照してください。 LINQ セット操作の詳細については、「セット操作」を参照してください。

HashSet<T> を使用する状況

LINQ セット操作と HashSet<T> 操作の主な違いは、LINQ セット操作が常に新しい IEnumerable<T> コレクションを返すのに対し、HashSet<T> の同等のメソッドは現在のコレクションを変更するという点です。 HashSet<T> には、より信頼性の高いセット操作がより多く用意されています。 たとえば、HashSet<T> では、IsSubsetOfIsSupersetOf などの比較を実行できます。

一般に、新しいセットを作成する必要がある場合、または用意されているセット操作へのアクセスしか必要としないアプリケーションの場合は、IEnumerable<T> コレクションや配列に対して LINQ セット操作を使用すれば十分です。 ただし、その他のセット操作にアプリケーションからアクセスする必要がある場合、または新しいコレクションの作成が望ましくないか不要な場合は、HashSet<T> クラスを使用します。

HashSet<T> 操作と LINQ セット操作

次の表は、HashSet<T> 操作とそれに相当する LINQ セット操作を示したものです。

HashSet(Of T) 操作

同等の LINQ 操作

UnionWith

Union

IntersectWith

Intersect

ExceptWith

Except

なし

Distinct

SymmetricExceptWith

なし

Overlaps

なし

IsSubsetOf

なし

IsProperSubsetOf

なし

IsSupersetOf

なし

IsProperSupersetOf

なし

SetEquals

なし

参照

参照

HashSet<T>

概念

HashSet コレクション型

Parallel LINQ (PLINQ)

セット操作

その他の技術情報

統合言語クエリ (LINQ: Language-Integrated Query)

一般的に使用されるコレクション型