2012-02-29 20 views
5

Tengo una colección de objetos objcol1 (ejemplo Colección de ciudades en un estado) y otra colección de objetos objcol2 (ejemplo colección de ciudades en un país). Ahora estoy preguntando por objcol1 y quiero agregarlo a objcol2. Puedo hacer esto iterando a través de objcol1 y agregando uno por uno a objcol2, pero ¿puedo agregar directamente objcol1 a objcol2 como objcol2.add (objcol1);Agregar colección de objetos a otra colección de objetos sin iterar

¿Alguien puede decirme si es posible sin iterar? Si es así por favor me explique el proceso

+0

duplicado posible de [Cómo anexar colección numerable a una lista existente en C#] (http://stackoverflow.com/questions/4067223/how-to-append-enumerable-collection-to-an-existing -list-in-c-sharp) – Fragment

Respuesta

13

Se puede usar el método Enumerable.Concat extensión:

objcol1 = objcol1.Concat(objcol2) 

Estoy seguro de que en algún lugar debajo de las sábanas en realidad itera, pero no tendrá que escribir el código para hacer eso.

NOTA: Esto solo funcionará si sus objetos City son iguales, o puede usar Select para asignar los objetos.

+0

Gracias funcionó como lo necesitaba. – Deepak

+0

puede ser porque no usaste objcol1 = objcol1.Concat (objcol2); – Jayanga

+0

Injusto, creo que es una buena respuesta +1 – Tx3

2

Sí, es posible dependiendo de su caso de uso. Si no le importa cuál es el tipo de "colección", puede usar el comando lincat Concat para crear un nuevo enumerable que, cuando se itere, incluya elementos de ambas colecciones.

var collection1 = new List<int> { 1, 2, 3 }; 
var collection2 = new [] { 4, 5, 6}; 

var concatenated = collection1.Concat(collection2); 

Si, por el contrario, es necesario insertar en realidad los artículos en la colección existente, tendrá que recorrer.

1

En realidad, no es necesario un nuevo var:

collection1.AddRange(collection2); 
7

También puede utilizar AddRange de la lista. Consulte documentation para obtener más información.

var a = new List<string> { "1", "2" }; 
var b = new List<string> { "3", "4" }; 
a.AddRange(b); 

// a would contain "1", "2", "3" and "4" 
Cuestiones relacionadas