Language

HashSet.ExceptWith(IEnumerable) Method

Definition

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

public:
 virtual void ExceptWith(System::Collections::Generic::IEnumerable ^ other);
public:
 void ExceptWith(System::Collections::Generic::IEnumerable ^ other);
public void ExceptWith(System.Collections.Generic.IEnumerable 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

The collection of items to remove from the HashSet object.

Implements

Exceptions

other is null.

Examples

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

HashSet lowNumbers = new HashSet();
HashSet highNumbers = new HashSet();

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 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) =
    printf "{"

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

    printfn " }"

let lowNumbers = HashSet()
let highNumbers = HashSet()

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