将列表组合成一个arraylist(C#)

时间:2012-08-07 01:33:54

标签: list arraylist

我有一个列表,我想将其他三个列表复制到其中。

// The main list
List<List<string>> list= new List<List<string>>();

// The lists which I want to combine
ArrayList sublist1= new ArrayList();;
ArrayList sublist2= new ArrayList();;
ArrayList sublist3= new ArrayList();;

我尝试的是:

list[0].AddRange(sublist1);
list[0].AddRange(sublist2);
list[0].AddRange(sublist3);

它不起作用,因为它是多维列表。我需要这种类型的清单用于未来的计划。

我怎样才能完成它?

3 个答案:

答案 0 :(得分:1)

正如评论中已经提到的那样,只需使用List<string>代替ArrayList。 它与多维数组无关,只是类型不匹配。

然后你说List<List<string>>它基本上意味着创建列表类型,它将包含List<string>作为项目(尖括号中的部分),所以你需要添加它们,而不是ArrayList s 。同样地,List<string>表示将包含string作为项目的列表类型。

答案 1 :(得分:1)

将子列表的类型更改为某些IEnumerable<string>(字符串[]或List<string>或其他内容)

var sublist1 = new string[] {};
var sublist2 = new string[] {};
var sublist3 = new string[] {};

或做演员

list[0].AddRange((IEnumerable<string>) sublist1);
list[0].AddRange((IEnumerable<string>) sublist2);
list[0].AddRange((IEnumerable<string>) sublist3);

因为您尝试使用System.Collections.Generic.List<T>的AddRange方法 并且这种方法的签名是

public void AddRange(System.Collections.Generic.IEnumerable<T> collection)

所以它需要IEnumerable作为参数。

答案 2 :(得分:1)

在注释中,您需要传递一个跟随IEnumerable的类型。例如,您可以将ArrayLists更改为List

// The main list
List<List<string>> list = new List<List<string>>();

// The lists which I want to combine
var sublist1 = new List<string>();
var sublist2 = new List<string>();
var sublist3 = new List<string>();

list[0].AddRange(sublist1);
list[0].AddRange(sublist2);
list[0].AddRange(sublist3);