Convert an array to a HashSet<T> in .NET

How do I convert an array to a hash set ?

string[]  BlockedList = BlockList.Split(new char[] { ';' },     
StringSplitOptions.RemoveEmptyEntries);

I need to convert this list to a hashset.


You do not specify what type BlockedList is, so I will assume it is something that derives from IList (if meant to say String where you wrote BlockList then it would be a string array which derives from IList).

HashSet has a constructor that takes an IEnumerable, so you need merely pass the list into this constructor, as IList derives from IEnumerable.

var set = new HashSet(BlockedList);

I'm assuming BlockList is a string (hence the call to Split) which returns a string array.

Just pass the array (which implements IEnumerable) to the constructor of the HashSet:

var hashSet = new HashSet<string>(BlockedList);

Here is an extension method that will generate a HashSet from any IEnumerable:

public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source)
{
    return new HashSet<T>(source);
}

To use it with your example above:

var hashSet = BlockedList.ToHashSet();

Update 2017 - For .Net Framework 4.7.1+ and .Net Core 2.0+

There is now a built-in ToHashSet method:

var hashSet = BlockedList.ToHashSet();

Missed new keyword on extension example....

  public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source)
    {
        return new HashSet<T>(source);
    }