2016-02-27 43 views
1

我怎样才能实现将以下四个不同大小的列表连接到一个新列表中。我真的不知道如何解决这个问题。如果我做了,我会试图发布一些尝试。加入多个列表<string[]>到一个新列表

编辑:我应该指出我尝试创建的列表不是列表本身,而是列表中的所有组合列表字符串。

List<string[5]> coords_list 
List<string[8]> outer_plf_list 
List<string[8]> planet_start_plf_list 
List<string[5]> planet_plf_list 
+2

http://stackoverflow.com/questions/4493858/elegant-way-to-combine-multiple-collections-of-elements或http://stackoverflow.com/questions/4734556/concatenate-lists-与-LINQ。 –

+0

@EugenePodskal感谢您的链接。 –

+0

@RyanWalkowski所以,你想要的是一个,单,'列表'是吗?或者它是'List ' – Ian

回答

3

对于你的情况,请尽量使用LINQ Concat

这导致List<string[]>

var newlist = coords_list 
    .Concat(outer_plf_list) 
    .Concat(planet_start_plf_list) 
    .Concat(planet_plf_list) 

或者,如果您需要List<string>,请执行以下操作:

var newlist = coords_list 
    .Concat(outer_plf_list) 
    .Concat(planet_start_plf_list) 
    .Concat(planet_plf_list) 
    .SelectMany(x => x) 
    .ToList(); 

你也可以使用AddRange作为一种替代方案:

var newlist = new List<string[]>(); 
newlist.AddRange(coords_list); 
newlist.AddRange(outer_plf_list); 
newlist.AddRange(planet_start_plf_list); 
newlist.AddRange(planet_plf_list); 

如果你有List<List<List<string>>>而不是List<string[]>不同string[]大小,你可以使用SelectMany拉平List<List<List<string>>>List<List<string>>

+0

谢谢这个帮助很大。我显然混淆了。我之前找到concat,但是当我试图获得列表时,我收到了列表,我没有注意到差异 –

+0

@RyanWalkowski好的,没问题。这也是我想澄清的......;)检查Rogey的答案。我认为他也注意到了... – Ian

1

你可以用列表的AddRange()方法,像这样:

var combinedList = new List<string>(); 
combinedList.AddRange(coords_list); 
combinedList.AddRange(outer_plf_list); 
combinedList.AddRange(planet_start_plf_list); 
combinedList.AddRange(planet_plf_list); 
+0

感谢您的输入! –

3

待办事项你想要一个字符串数组的列表,还是只有一个大的字符串列表?

对于第一种情况,lan的解决方案起作用。

对于后者,请使用SelectMany;

 List<string[]> p1 = new List<string[]>(); 
     p1.Add(new String[] { "a", "b" }); 

     List<string[]> p2 = new List<string[]>(); 
     p2.Add(new String[] { "c", "d" }); 
     p2.Add(new String[] { "e", "f" }); 

     // will contain 6 string items: a, b, c, d, e, f 
     var result = p1.Concat(p2).SelectMany(s => s).ToList(); 
+0

感谢您的输入! –

+0

我看到你也注意到了。投了票。 ;) – Ian

相关问题