Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

HashSet<T>.SetEquals(IEnumerable<T>) Method

Definition

Namespace:
System.Collections.Generic
Assemblies:
System.Collections.dll, System.Core.dll
Assemblies:
netstandard.dll, System.Collections.dll
Assembly:
System.Collections.dll
Assembly:
System.Core.dll
Assembly:
netstandard.dll
Source:
HashSet.cs
Source:
HashSet.cs
Source:
HashSet.cs
Source:
HashSet.cs
Source:
HashSet.cs

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Determines whether a HashSet<T> object and the specified collection contain the same elements.

public:
 virtual bool SetEquals(System::Collections::Generic::IEnumerable<T> ^ other);
public:
 bool SetEquals(System::Collections::Generic::IEnumerable<T> ^ other);
public bool SetEquals(System.Collections.Generic.IEnumerable<T> other);
[System.Security.SecurityCritical]
public bool SetEquals(System.Collections.Generic.IEnumerable<T> other);
abstract member SetEquals : seq<'T> -> bool
override this.SetEquals : seq<'T> -> bool
[<System.Security.SecurityCritical>]
member this.SetEquals : seq<'T> -> bool
[<System.Security.SecurityCritical>]
abstract member SetEquals : seq<'T> -> bool
override this.SetEquals : seq<'T> -> bool
Public Function SetEquals (other As IEnumerable(Of T)) As Boolean

Parameters

other
IEnumerable<T>

The collection to compare to the current HashSet<T> object.

Returns

true if the HashSet<T> object is equal to other; otherwise, false.

Implements

Attributes

Exceptions

other is null.

Examples

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 allNumbers HashSet<T> object is then modified, after which the sets are equal.

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));

void DisplaySet(HashSet<int> set)
{
 Console.Write("{");
 foreach (int i in set)
 {
 Console.Write(" {0}", i);
 }
 Console.WriteLine(" }");
}

/* 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
*/
let displaySet (set: HashSet<int>) =
 printf "{"

 for i in set do
 printf $" {i}"

 printfn " }"

let lowNumbers = HashSet<int>()
let allNumbers = HashSet<int>()

for i = 1 to 4 do
 lowNumbers.Add i |> ignore


for i = 0 to 9 do
 allNumbers.Add i |> ignore

printf $"lowNumbers contains {lowNumbers.Count} elements: "
displaySet lowNumbers

printf $"allNumbers contains {allNumbers.Count} elements: "
displaySet allNumbers

printfn $"lowNumbers overlaps allNumbers: {lowNumbers.Overlaps allNumbers}"

printfn $"allNumbers and lowNumbers are equal sets: {allNumbers.SetEquals lowNumbers}"

// Show the results of sub/superset testing
printfn $"lowNumbers is a subset of allNumbers: {lowNumbers.IsSubsetOf allNumbers}"
printfn $"allNumbers is a superset of lowNumbers: {allNumbers.IsSupersetOf lowNumbers}"
printfn $"lowNumbers is a proper subset of allNumbers: {lowNumbers.IsProperSubsetOf allNumbers}"
printfn $"allNumbers is a proper superset of lowNumbers: {allNumbers.IsProperSupersetOf lowNumbers}"

// Modify allNumbers to remove numbers that are not in lowNumbers.
allNumbers.IntersectWith lowNumbers
printf $"allNumbers contains {allNumbers.Count} elements: "
displaySet allNumbers

printfn $"allNumbers and lowNumbers are equal sets: {allNumbers.SetEquals lowNumbers}"

// Show the results of sub/superset testing with the modified set.
printfn $"lowNumbers is a subset of allNumbers: {lowNumbers.IsSubsetOf allNumbers}"
printfn $"allNumbers is a superset of lowNumbers: {allNumbers.IsSupersetOf lowNumbers}"
printfn $"lowNumbers is a proper subset of allNumbers: {lowNumbers.IsProperSubsetOf allNumbers}"
printfn $"allNumbers is a proper superset of lowNumbers: {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
Shared Sub Main()

 Dim lowNumbers As HashSet(Of Integer) = New HashSet(Of Integer)()
 Dim allNumbers As HashSet(Of Integer) = New HashSet(Of Integer)()

 For i As Integer = 1 To 4
 lowNumbers.Add(i)
 Next i

 For i As Integer = 0 To 9
 allNumbers.Add(i)
 Next 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))
End Sub
' 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

Remarks

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.

Applies to


Feedback

Was this page helpful?