.NET:组合两个通用列表

Jam*_*ead 23 .net list

假设我有两个相同类型的通用列表.如何将它们组合成该类型的通用列表?

Tim*_*sen 32

这应该可以解决问题

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

List<Type> combined;
combined.AddRange(list1);
combined.AddRange(list2);
Run Code Online (Sandbox Code Playgroud)

  • 为什么不做list1.AddRange(list2)?它无需创建其他列表即可满足要求,并可保存整个添加. (4认同)

Guf*_*ffa 18

您只需将一个列表中的项目添加到另一个列表:

list1.AddRange(list2);
Run Code Online (Sandbox Code Playgroud)

如果要保留列表并创建一个新列表:

List<T> combined = new List<T>(list1);
combined.AddRange(list2);
Run Code Online (Sandbox Code Playgroud)

或者使用LINQ方法:

List<T> combined = list1.Concat(list2).ToList();
Run Code Online (Sandbox Code Playgroud)

在向项目添加项目之前,您可以通过创建具有正确容量的列表来获得更好的性能:

List<T> combined = new List<T>(list1.Count + list2.Count);
combined.AddRange(list1);
combined.AddRange(list2);
Run Code Online (Sandbox Code Playgroud)


Raf*_*eda 9

如果您使用的是C#3.0/.Net 3.5:

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

var list = list1.Concat(list2).ToList();
Run Code Online (Sandbox Code Playgroud)