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