HashSet 操作と LINQ セット操作
更新 : 2007 年 11 月
このトピックでは、HashSet<T> 操作と Language-Integrated Query (LINQ) セット操作を比較します。
LINQ セット操作
LINQ を使用すると、IEnumerable インターフェイスまたは IQueryable インターフェイスを実装するデータ ソースに対する一部のセット操作にアクセスできます。これには配列とコレクションが含まれます。
LINQ が提供するセット操作は次のとおりです。
Distinct
共用体
Intersect
Except
LINQ の詳細については、「統合言語クエリ (LINQ: Language-Integrated Query)」を参照してください。LINQ セット操作の詳細については、「セット操作」を参照してください。
HashSet<T> を使用する状況
LINQ セット操作と HashSet<T> 操作の主な違いは、LINQ セット操作は常に新しい IEnumerable<T> コレクションを返しますが、HashSet<T> の同等のメソッドは現在のコレクションを変更するという点です。HashSet<T> には、より信頼性の高いセット操作がより多く用意されています。たとえば、HashSet<T> では、IsSubsetOf や IsSupersetOf などの比較を実行できます。
一般に、新しいセットを作成する必要がある場合、または用意されているセット操作へのアクセスしか必要としないアプリケーションの場合は、IEnumerable<T> コレクションや配列に対して LINQ セット操作を使用すれば十分です。ただし、その他のセット操作にアプリケーションからアクセスする必要がある場合、または新しいコレクションの作成が望ましくないか不要な場合は、HashSet<T> クラスを使用します。
HashSet<T> 操作と LINQ セット操作
次の表は、HashSet<T> 操作とそれに相当する LINQ セット操作を示したものです。
HashSet(Of T) 操作 |
同等の LINQ 操作 |
---|---|
なし |
|
なし |
|
なし |
|
なし |
|
なし |
|
なし |
|
なし |
|
なし |