我有一个列表,我想将其他三个列表复制到其中。
// 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);
它不起作用,因为它是多维列表。我需要这种类型的清单用于未来的计划。
我怎样才能完成它?
答案 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);