Подтвердить что ты не робот

Преобразование массива в HashSet <T> в .NET.

Как преобразовать массив в хэш-набор?

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

Мне нужно преобразовать этот список в hashset.

4b9b3361

Ответ 1

Вы не укажете, какой тип BlockedList есть, поэтому я предполагаю, что это что-то, что происходит от IList (если предполагается сказать String, где вы написали BlockList), тогда это будет строковый массив, который выводится от IList).

HashSet имеет конструктор, который принимает IEnumerable, поэтому вам нужно просто передать список в этот конструктор, поскольку IList происходит от IEnumerable.

var set = new HashSet(BlockedList);

Ответ 2

Я предполагаю, что BlockList - это строка (следовательно, вызов Split), которая возвращает строковый массив.

Просто передайте массив (который реализует IEnumerable) в конструктор для HashSet:

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

Ответ 3

Вот метод расширения, который будет генерировать HashSet из любого IEnumerable:

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

Чтобы использовать его с приведенным выше примером:

var hashSet = BlockedList.ToHashSet();

Ответ 4

Пропущено новое ключевое слово в примере расширения....

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

Ответ 5

Чтобы сделать еще один шаг, следующий однострочный пример демонстрирует, как вы можете преобразовать литеральный строковый массив в HashSet, так что вам НЕ нужно определять промежуточную переменную SomethingList.

var directions = new HashSet<string>(new [] {"east", "west", "north", "south"});