0

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

// 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);

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

我怎样才能完成它?

4

3 回答 3

1

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

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

于 2012-08-07T01:46:04.267 回答
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);

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

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

所以它需要 IEnumerable 作为参数。

于 2012-08-07T01:48:22.680 回答
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);
于 2012-08-07T01:52:09.677 回答