Note

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

Access to this page requires authorization. You can try .

HashSet<T>.ExceptWith(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.

Removes all elements in the specified collection from the current HashSet<T> object.

public:
 virtual void ExceptWith(System::Collections::Generic::IEnumerable<T> ^ other);
public:
 void ExceptWith(System::Collections::Generic::IEnumerable<T> ^ other);
public void ExceptWith(System.Collections.Generic.IEnumerable<T> other);
abstract member ExceptWith : seq<'T> -> unit
override this.ExceptWith : seq<'T> -> unit
member this.ExceptWith : seq<'T> -> unit
Public Sub ExceptWith (other As IEnumerable(Of T))

Parameters

other
IEnumerable<T>

The collection of items to remove from the HashSet<T> object.

Implements

Exceptions

other is null.

Examples

The following example creates two HashSet<T> collections with overlapping sets of data. The lower range of values is then removed from the larger set using the ExceptWith method.

HashSet<int> lowNumbers = new HashSet<int>();
HashSet<int> highNumbers = new HashSet<int>();

for (int i = 0; i < 6; i++)
{
 lowNumbers.Add(i);
}

for (int i = 3; i < 10; i++)
{
 highNumbers.Add(i);
}

Console.Write("lowNumbers contains {0} elements: ", lowNumbers.Count);
DisplaySet(lowNumbers);

Console.Write("highNumbers contains {0} elements: ", highNumbers.Count);
DisplaySet(highNumbers);

Console.WriteLine("highNumbers ExceptWith lowNumbers...");
highNumbers.ExceptWith(lowNumbers);

Console.Write("highNumbers contains {0} elements: ", highNumbers.Count);
DisplaySet(highNumbers);

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

/* This example provides output similar to the following:
* lowNumbers contains 6 elements: { 0 1 2 3 4 5 }
* highNumbers contains 7 elements: { 3 4 5 6 7 8 9 }
* highNumbers ExceptWith lowNumbers...
* highNumbers contains 4 elements: { 6 7 8 9 }
*/
let displaySet (set: HashSet<int>) =
 printf "{"

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

 printfn " }"

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

for i = 0 to 5 do
 lowNumbers.Add i |> ignore

for i = 3 to 9 do
 highNumbers.Add i |> ignore

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

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

printfn "highNumbers ExceptWith lowNumbers..."
highNumbers.ExceptWith(lowNumbers)

printf $"highNumbers contains {highNumbers.Count} elements: "
displaySet highNumbers
// This example provides output similar to the following:
// lowNumbers contains 6 elements: { 0 1 2 3 4 5 }
// highNumbers contains 7 elements: { 3 4 5 6 7 8 9 }
// highNumbers ExceptWith lowNumbers...
// highNumbers contains 4 elements: { 6 7 8 9 }
Shared Sub Main()

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

 For i As Integer = 0 To 5
 lowNumbers.Add(i)
 Next i

 For i As Integer = 3 To 9
 highNumbers.Add(i)
 Next i

 Console.Write("lowNumbers contains {0} elements: ", lowNumbers.Count)
 DisplaySet(lowNumbers)

 Console.Write("highNumbers contains {0} elements: ", highNumbers.Count)
 DisplaySet(highNumbers)

 Console.WriteLine("highNumbers ExceptWith lowNumbers...")
 highNumbers.ExceptWith(lowNumbers)

 Console.Write("highNumbers contains {0} elements: ", highNumbers.Count)
 DisplaySet(highNumbers)

End Sub
' This example provides output similar to the following:
' lowNumbers contains 6 elements: { 0 1 2 3 4 5 }
' highNumbers contains 7 elements: { 3 4 5 6 7 8 9 }
' highNumbers ExceptWith lowNumbers...
' highNumbers contains 4 elements: { 6 7 8 9 }

Remarks

The ExceptWith method is the equivalent of mathematical set subtraction.

This method is an O(n) operation, where n is the number of elements in the other parameter.

Applies to


Feedback

Was this page helpful?