Есть ли эквивалент AddRange для HashSet в С#
С помощью списка вы можете:
list.AddRange(otherCollection);
Нет метода добавления диапазона в HashSet.
Каков наилучший способ добавления другой коллекции в HashSet?
Ответы
Ответ 1
Для HashSet<T>
имя UnionWith
.
Это указывает на то, как работает HashSet
. Вы не можете безопасно Add
набор случайных элементов к нему, как в Collections
, некоторые элементы могут естественным образом испаряться.
Я думаю, что UnionWith
берет свое имя после "слияния с другим HashSet
", однако есть и перегрузка для IEnumerable<T>
.
Ответ 2
Это один из способов:
public static class Extensions
{
public static bool AddRange<T>(this HashSet<T> source, IEnumerable<T> items)
{
bool allAdded = true;
foreach (T item in items)
{
allAdded &= source.Add(item);
}
return allAdded;
}
}