¿Existe un equivalente de AddRange para un HashSet en C#?

Resuelto Stefanos Kargas asked hace 11 años • 3 respuestas

Con una lista puedes hacer:

list.AddRange(otherCollection);

No existe un método para agregar rango en un archivo HashSet. ¿ Cuál es la mejor manera de agregar otro ICollectiona HashSet?

Stefanos Kargas avatar Mar 07 '13 16:03 Stefanos Kargas
Aceptado

Porque HashSet<T>el nombre es UnionWith.

Esto es para indicar la forma distinta en que HashSetfunciona. No se puede agregar de forma segura Addun conjunto de elementos aleatorios como en Collections, algunos elementos pueden evaporarse naturalmente.

Creo que UnionWithtoma su nombre de "fusionarse con otro HashSet", sin embargo, también hay una sobrecarga IEnumerable<T>.

quetzalcoatl avatar Mar 07 '2013 09:03 quetzalcoatl

Esta es una manera:

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;
    }
}
RoadieRich avatar Mar 07 '2013 09:03 RoadieRich