2010-06-06 10 views
11

C'è qualche metodo in ICollection in C# che aggiungerebbe tutti gli elementi di un'altra raccolta? In questo momento devo scrivere sempre ciclo foreach per questo:Metodo in ICollection in C# che aggiunge tutti gli elementi di un'altra ICollection ad esso

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); 
} 

La mia domanda è: esiste metodo che può sostituire quel ciclo? Come ad esempio il metodo addAll(Collection c) in Java? Quindi scriverei solo qualcosa tipo:

allLetters.addAll(justWrittenLetters); 

risposta

18

Non esiste un metodo come questo per ICollection. Avete due opzioni, o usate un tipo diverso come List che ha il metodo AddRange() o, in alternativa, create un metodo di estensione:

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