HashSet- und LINQ-Mengenoperationen
In diesem Thema werden HashSet<T>-Operationen und LINQ-Mengenoperationen (Language-Integrated Query, sprachenintegrierte Abfragen) miteinander verglichen.
LINQ-Mengenoperationen
LINQ bietet jeder Datenquelle, die die IEnumerable-Schnittstelle oder die IQueryable-Schnittstelle implementiert, Zugriff auf bestimmte Mengenoperationen. Hierzu zählen auch Arrays und Auflistungen.
Folgende Mengenoperationen werden von LINQ bereitgestellt:
Distinct
Union
Intersect
Except
Weitere Informationen zu LINQ finden Sie unter LINQ (Language-Integrated Query, sprachintegrierte Abfrage) und Paralleles LINQ (PLINQ). Weitere Informationen über LINQ-Mengenoperationen finden Sie unter Mengenvorgänge.
Verwendung von HashSet<T>
Der Hauptunterschied zwischen LINQ-Mengenoperationen und HashSet<T>-Operationen besteht darin, dass LINQ-Mengenoperationen immer eine neue IEnumerable<T>-Auflistung zurückgeben, während die entsprechenden HashSet<T>-Methoden die aktuelle Auflistung ändern. HashSet<T> bietet mehr und stabilere Mengenoperationen. So bietet HashSet<T> beispielsweise Vergleiche wie IsSubsetOf und IsSupersetOf.
In der Regel reicht es aus, LINQ-Mengenoperationen für eine beliebige IEnumerable<T>-Auflistung oder ein Array zu verwenden, wenn Sie eine neue Menge erstellen möchten oder wenn die Anwendung nur auf die bereitgestellten Mengenoperationen zugreifen muss. Wenn die Anwendung jedoch Zugriff auf weitere Mengenoperationen benötigt oder das Erstellen einer neuen Auflistung nicht erwünscht oder nicht notwendig ist, verwenden Sie die HashSet<T>-Klasse.
HashSet<T>- und LINQ-Mengenoperationen
In der folgenden Tabelle sind die HashSet<T>-Operationen und ihre entsprechenden LINQ-Mengenoperationen aufgeführt.
HashSet(Of T)-Operation |
LINQ-Entsprechung |
---|---|
Nicht bereitgestellt |
|
Nicht bereitgestellt |
|
Nicht bereitgestellt |
|
Nicht bereitgestellt |
|
Nicht bereitgestellt |
|
Nicht bereitgestellt |
|
Nicht bereitgestellt |
|
Nicht bereitgestellt |