2016-02-27 44 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

相關問題