2010-01-04 12 views

Respuesta

27

Esto debería hacer el truco

List<Type> list1; 
List<Type> list2; 

List<Type> combined; 
combined.AddRange(list1); 
combined.AddRange(list2); 
+0

¿Es este el más eficiente, o la forma más conveniente? –

+1

pstst .AddRange, Java está allí -> – blu

+0

@Ipthnc, no conozco otra manera de hacerlo, que no sea un 'foreach()' combinado con 'List.Add()'. Pero seguro es la forma más conveniente. –

10

Si estás usando C# 3.0/Net 3.5:

List<SomeType> list1; 
List<SomeType> list2; 

var list = list1.Concat(list2).ToList(); 
+0

Como aclaración, esto requiere .NET 3.5, no solo C# 3.0 (los métodos de extensión son parte de C# 3.0, pero la clase 'System.Linq.Enumerable' que los define es parte de. NET 3.5) –

+0

@ Adam Robinson: Gracias por la precisión. –

+1

Esto puede funcionar en .NET 2.0 si usa VS2008 y LinqBridge;) –

16

Puede simplemente agregar los elementos de una lista a la otra:

list1.AddRange(list2); 

Si desea mantener las listas y crear una nueva:

List<T> combined = new List<T>(list1); 
combined.AddRange(list2); 

O utilizando métodos de LINQ:

List<T> combined = list1.Concat(list2).ToList(); 

Usted puede ser un poco mejor rendimiento mediante la creación de una lista con la capacidad correcta antes de agregar los elementos a ella:

List<T> combined = new List<T>(list1.Count + list2.Count); 
combined.AddRange(list1); 
combined.AddRange(list2); 
+0

¿Qué diferencia hay entre la palabra clave join y de esta forma usted declara? –