Есть ли эквивалент 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;
    }
}