En ocasiones me he encontrado con personas que me preguntan si existe una manera de tener un AddRange en un ObservableCollection así como lo tiene el List<T>, pues mi respuesta siempre ha sido este código. Quizás no sea el mas optimo o quizás hay mejores truco pero hasta ahora me ha funcionado muy bien, además que me he ahorrado muchos ForEach .
public static class ExtensionesColecciones { public static void AddRange<T>(this ObservableCollection<T> listOriginal , IEnumerable<T> collection) { if (listOriginal == null) listOriginal = new ObservableCollection<T>();//En caso de que aun no tenga una instancia //Verificamos que sea diferente de null o vacio if (!collection.IsNullOrEmpty<T>()) { foreach (var item in collection) listOriginal.Add(item); } } }
Espero que les sea de mucha ayuda.
Nota: El Método de Extensión IsNullOrEmpty esta en este Link: Tips SilverLight: Comprobar si una Coleccion esta vacia o Nula
¿Para que compruebas que listOriginal no sea nulo? Un parámetro extensor no puede ser nulo.