HashSet<T>.SetEquals Method (IEnumerable<T>)
Determines whether a HashSet<T> object and the specified collection contain the same elements.
Assembly: System.Core (in System.Core.dll)
Parameters
- other
-
Type:
System.Collections.Generic.IEnumerable<T>
The collection to compare to the current HashSet<T> object.
Implements
ISet<T>.SetEquals(IEnumerable<T>)| Exception | Condition |
|---|---|
| ArgumentNullException | other is null. |
The SetEquals method ignores duplicate entries and the order of elements in the other parameter.
If the collection represented by other is a HashSet<T> collection with the same equality comparer as the current HashSet<T> object, this method is an O(n) operation. Otherwise, this method is an O(n + m) operation, where n is the number of elements in other and m is Count.
The following example creates two disparate HashSet<T> objects and compares them to each another. Initially, the two sets are not equal, which is demonstrated by using the SetEquals method. The allNumbersHashSet<T> object is then modified, after which the sets are equal.
static void Main() { HashSet<int> lowNumbers = new HashSet<int>(); HashSet<int> allNumbers = new HashSet<int>(); for (int i = 1; i < 5; i++) { lowNumbers.Add(i); } for (int i = 0; i < 10; i++) { allNumbers.Add(i); } Console.Write("lowNumbers contains {0} elements: ", lowNumbers.Count); DisplaySet(lowNumbers); Console.Write("allNumbers contains {0} elements: ", allNumbers.Count); DisplaySet(allNumbers); Console.WriteLine("lowNumbers overlaps allNumbers: {0}", lowNumbers.Overlaps(allNumbers)); Console.WriteLine("allNumbers and lowNumbers are equal sets: {0}", allNumbers.SetEquals(lowNumbers)); // Show the results of sub/superset testing Console.WriteLine("lowNumbers is a subset of allNumbers: {0}", lowNumbers.IsSubsetOf(allNumbers)); Console.WriteLine("allNumbers is a superset of lowNumbers: {0}", allNumbers.IsSupersetOf(lowNumbers)); Console.WriteLine("lowNumbers is a proper subset of allNumbers: {0}", lowNumbers.IsProperSubsetOf(allNumbers)); Console.WriteLine("allNumbers is a proper superset of lowNumbers: {0}", allNumbers.IsProperSupersetOf(lowNumbers)); // Modify allNumbers to remove numbers that are not in lowNumbers. allNumbers.IntersectWith(lowNumbers); Console.Write("allNumbers contains {0} elements: ", allNumbers.Count); DisplaySet(allNumbers); Console.WriteLine("allNumbers and lowNumbers are equal sets: {0}", allNumbers.SetEquals(lowNumbers)); // Show the results of sub/superset testing with the modified set. Console.WriteLine("lowNumbers is a subset of allNumbers: {0}", lowNumbers.IsSubsetOf(allNumbers)); Console.WriteLine("allNumbers is a superset of lowNumbers: {0}", allNumbers.IsSupersetOf(lowNumbers)); Console.WriteLine("lowNumbers is a proper subset of allNumbers: {0}", lowNumbers.IsProperSubsetOf(allNumbers)); Console.WriteLine("allNumbers is a proper superset of lowNumbers: {0}", allNumbers.IsProperSupersetOf(lowNumbers)); } /* This code example produces output similar to the following: * lowNumbers contains 4 elements: { 1 2 3 4 } * allNumbers contains 10 elements: { 0 1 2 3 4 5 6 7 8 9 } * lowNumbers overlaps allNumbers: True * allNumbers and lowNumbers are equal sets: False * lowNumbers is a subset of allNumbers: True * allNumbers is a superset of lowNumbers: True * lowNumbers is a proper subset of allNumbers: True * allNumbers is a proper superset of lowNumbers: True * allNumbers contains 4 elements: { 1 2 3 4 } * allNumbers and lowNumbers are equal sets: True * lowNumbers is a subset of allNumbers: True * allNumbers is a superset of lowNumbers: True * lowNumbers is a proper subset of allNumbers: False * allNumbers is a proper superset of lowNumbers: False */
Available since 8
.NET Framework
Available since 3.5
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 4.0
Windows Phone Silverlight
Available since 8.0
Windows Phone
Available since 8.1