2010-06-06 13 views
11

¿Hay algún método en ICollection en C# que agregue todos los elementos de otra colección? En este momento tengo que escribir siempre ciclo foreach para esto:Método en ICollection en C# que agrega todos los elementos de otra ICollection

ICollection<Letter> allLetters = ... //some initalization 
ICollection<Letter> justWrittenLetters = ... //some initalization 
... //some code, adding to elements to those ICollections 

foreach(Letter newLetter in justWrittenLetters){ 
    allLetters.add(newLetter); 
} 

Mi pregunta es, ¿hay método que puede sustituir a ese ciclo? Como por ejemplo el método addAll(Collection c) en Java? Así que escribiría solo algo como:

allLetters.addAll(justWrittenLetters); 

Respuesta

18

No hay un método como este para ICollection. Tiene dos opciones, ya sea utilizar un tipo diferente como List que tiene el método AddRange() o, alternativamente, crear un método de extensión:

public static class CollectionExtensions 
{ 
    public static void AddRange<T>(this ICollection<T> collection, IEnumerable<T> newItems) 
    { 
     foreach (T item in newItems) 
     { 
      collection.Add(item); 
     } 
    } 
} 
Cuestiones relacionadas