Как преобразовать массив в хэш-набор?
string[] BlockedList = BlockList.Split(new char[] { ';' },
StringSplitOptions.RemoveEmptyEntries);
Мне нужно преобразовать этот список в hashset
.
Как преобразовать массив в хэш-набор?
string[] BlockedList = BlockList.Split(new char[] { ';' },
StringSplitOptions.RemoveEmptyEntries);
Мне нужно преобразовать этот список в hashset
.
Вы не укажете, какой тип BlockedList
есть, поэтому я предполагаю, что это что-то, что происходит от IList
(если предполагается сказать String
, где вы написали BlockList
), тогда это будет строковый массив, который выводится от IList
).
HashSet
имеет конструктор, который принимает IEnumerable
, поэтому вам нужно просто передать список в этот конструктор, поскольку IList
происходит от IEnumerable
.
var set = new HashSet(BlockedList);
Я предполагаю, что BlockList - это строка (следовательно, вызов Split), которая возвращает строковый массив.
Просто передайте массив (который реализует IEnumerable) в конструктор для HashSet:
var hashSet = new HashSet<string>(BlockedList);
Вот метод расширения, который будет генерировать HashSet из любого IEnumerable:
public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source)
{
return new HashSet<T>(source);
}
Чтобы использовать его с приведенным выше примером:
var hashSet = BlockedList.ToHashSet();
Пропущено новое ключевое слово в примере расширения....
public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source)
{
return new HashSet<T>(source);
}
Чтобы сделать еще один шаг, следующий однострочный пример демонстрирует, как вы можете преобразовать литеральный строковый массив в HashSet, так что вам НЕ нужно определять промежуточную переменную SomethingList
.
var directions = new HashSet<string>(new [] {"east", "west", "north", "south"});