Uniendo dos listas juntas

Resuelto GurdeepS asked hace 14 años • 15 respuestas

Si tengo dos listas de tipo cadena (o de cualquier otro tipo), ¿cuál es una forma rápida de unir las dos listas?

El orden debería seguir siendo el mismo. Se deben eliminar los duplicados (aunque cada elemento en ambos enlaces es único). No encontré mucho sobre esto al buscar en Google y no quería implementar ninguna interfaz .NET para acelerar la entrega.

GurdeepS avatar Oct 07 '09 04:10 GurdeepS
Aceptado

Tu podrías intentar:

List<string> a = new List<string>();
List<string> b = new List<string>();

a.AddRange(b);

página MSDN paraAddRange

Esto conserva el orden de las listas, pero no elimina ningún duplicado (lo cual Unionsería suficiente).

Esto cambia la lista a. Si desea conservar las listas originales, debe usar Concat(como se señala en las otras respuestas):

var newList = a.Concat(b);

Esto devuelve IEnumerablesiempre que ano sea nulo.

ChrisF avatar Oct 06 '2009 21:10 ChrisF

La forma con la menor sobrecarga de espacio es utilizar el método de extensión Concat.

var combined = list1.Concat(list2);

Crea una instancia IEnumerable<T>que enumerará los elementos de lista1 y lista2 en ese orden.

JaredPar avatar Oct 06 '2009 21:10 JaredPar

El método Union podría satisfacer sus necesidades. No especificó si el orden o los duplicados eran importantes.

Tome dos IEnumerables y realice una unión como se ve aquí:

int[] ints1 = { 5, 3, 9, 7, 5, 9, 3, 7 };
int[] ints2 = { 8, 3, 6, 4, 4, 9, 1, 0 };

IEnumerable<int> union = ints1.Union(ints2);

// yields { 5, 3, 9, 7, 8, 6, 4, 1, 0 } 
Larsenal avatar Oct 06 '2009 21:10 Larsenal