2010-01-04 96 views

回答

27

這應該做的伎倆

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

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

這是最有效的,或最方便的方式? – 2010-01-04 22:37:38

+1

pstst .AddRange,Java在那裏 - > – blu 2010-01-04 22:39:10

+0

@Ipthnc,除了'foreach()'和List.Add()'結合在一起外,我不知道其他的方法。但它確實是最方便的方式。 – 2010-01-04 22:39:59

10

如果您正在使用C#3.0/.NET 3.5:

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

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

作爲一個澄清,這需要.NET 3.5,而不僅僅是C#3.0(擴展方法是C#3.0的一部分,但定義它們的'System.Linq.Enumerable'類是其中的一部分。 NET 3.5) – 2010-01-04 22:45:15

+0

@Adam Robinson:謝謝你的精確度。 – 2010-01-04 22:52:52

+1

這可以在.NET 2.0上工作,如果你使用VS2008和LinqBridge;) – 2010-01-04 23:22:40

16

您可以簡單地將項目從一個列表添加到另一個列表中:

list1.AddRange(list2); 

如果你想保留名單,並創建一個新:

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

或者使用LINQ方法:

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

您可以通過創建一個列表得到一點更好的性能在添加項目之前的正確容量:

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

加入關鍵字和這種方式你聲明有什麼區別? – 2010-12-01 05:23:03