Si tengo:
List<string> myList1;
List<string> myList2;
myList1 = getMeAList();
// Checked myList1, it contains 4 strings
myList2 = getMeAnotherList();
// Checked myList2, it contains 6 strings
myList1.Concat(myList2);
// Checked mylist1, it contains 4 strings... why?
Ejecuté un código similar a este en Visual Studio 2008 y establecí puntos de interrupción después de cada ejecución. Después myList1 = getMeAList();
, myList1
contiene cuatro cadenas, y presioné el botón más para asegurarme de que no fueran todas nulas.
Después myList2 = getMeAnotherList();
, myList2
contiene seis cadenas, y verifiqué para asegurarme de que no fueran nulas ... Después de que myList1.Concat(myList2);
myList1 contuviera solo cuatro cadenas. ¿Porqué es eso?
fuente
IEnumerable<T>
Está funcionando bien, creo que sí. Como se dijo anteriormente, Concat devuelve una nueva secuencia y, al convertir el resultado en Lista, hace el trabajo perfectamente.
fuente
También vale la pena señalar que Concat funciona en tiempo constante y en memoria constante. Por ejemplo, el siguiente código
da las siguientes métricas de tiempo / memoria:
fuente
Sé que esto es viejo, pero me encontré con esta publicación rápidamente pensando que Concat sería mi respuesta. Union funcionó muy bien para mí. Tenga en cuenta que solo devuelve valores únicos, pero sabiendo que estaba obteniendo valores únicos de todos modos, esta solución funcionó para mí.
El resultado es:
fuente
Echa un vistazo a mi implementación. Está a salvo de las listas nulas.
fuente