C# | Remove elements from a HashSet with conditions defined by the predicate - GeeksforGeeks

01 Feb, 2019
A HashSet is an unordered collection of the unique elements. It comes under System.Collections.Generic namespace. It is used in a situation where we want to prevent duplicates from being inserted in the collection. As far as performance is concerned, it is better in comparison to the list.
HashSet<T>.RemoveWhere(Predicate<T>) method is used to remove all elements that match the conditions defined by the specified predicate from a HashSet<T> collection.
Syntax:
public int RemoveWhere (Predicate<T> match);

Return Value: This method returns the number of elements that were removed from the HashSet<T> collection.
Exception: This method will give the ArgumentNullException if the match is null.
Note: Calling this method is an O(n) operation, where n is Count i.e, the number of elements that are contained in the set.
Below are the programs to illustrate the use of HashSet<T>.RemoveWhere(Predicate<T>) Method:
Example 1:
// C# code to remove elements from a HashSet// with conditions defined by the predicateusing System;using System.Collections.Generic;  class GFG {      // Driver code    public static void Main()    {          // Creating a HashSet of integers        HashSet<int> mySet = new HashSet<int>();          // Inserting elements into HashSet        for (int i = 0; i < 10; i++) {            mySet.Add(i);        }          Console.WriteLine("The elements in HashSet are : ");          // Displaying the elements in HashSet        foreach(int i in mySet)        {            Console.WriteLine(i);        }          // Displaying the number of elements in HashSet        Console.WriteLine("Number of elements are : " + mySet.Count);          // Remove elements from a HashSet        // with conditions defined by the predicate        mySet.RemoveWhere(isEven);          Console.WriteLine("The elements in HashSet are : ");          // Displaying the elements in HashSet        foreach(int i in mySet)        {            Console.WriteLine(i);        }          // Displaying the number of elements in HashSet        Console.WriteLine("Number of elements are : " + mySet.Count);    }      // Helper function which tells    // whether an element is even or not    private static bool isEven(int i)    {        return ((i % 2) == 0);    }}
The elements in HashSet are : 
0
1
2
3
4
5
6
7
8
9
Number of elements are : 10
The elements in HashSet are : 
1
3
5
7
9
Number of elements are : 5

Example 2:
// C# code to remove elements from a HashSet// with conditions defined by the predicateusing System;using System.Collections.Generic;  class GFG {      // Driver code    public static void Main()    {          // Creating a HashSet of integers        HashSet<int> mySet = new HashSet<int>();          // Inserting elements into HashSet        for (int i = 0; i < 20; i++) {            mySet.Add(i);        }          // Displaying the number of elements in HashSet        Console.WriteLine("Number of elements are : " + mySet.Count);          // Remove elements from a HashSet        // with conditions defined by the predicate        mySet.RemoveWhere(myFunc);          // Displaying the number of elements in HashSet        Console.WriteLine("Number of elements are : " + mySet.Count);    }      // Helper function which tells    // whether an element is divisible    // by both 2 and 3    private static bool myFunc(int i)    {        return ((i % 2) == 0 && (i % 3 == 0));    }}
Number of elements are : 20
Number of elements are : 16

Reference:
https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.hashset-1.removewhere?view=netframework-4.7.2
CSharp-Generic-HashSet
CSharp-Generic-Namespace
CSharp-method
C#
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
C# | Constructors
C# | Class and Object
Introduction to .NET Framework
Extension Method in C#
Difference between Ref and Out keywords in C#
C# | String.IndexOf( ) Method | Set - 1
C# | Delegates
C# | Data Types
C# | Abstract Classes
C# | Replace() Method