将多个List <string []>连接到一个新列表中

时间:2016-02-27 15:44:50

标签: c#

我怎样才能将以下不同大小的四个列表加入到一个新列表中。我真的不知道如何解决这个问题。如果我这样做,我会尝试发布一些尝试。

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

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

3 个答案:

答案 0 :(得分: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[]尺寸不同,则可以使用SelectManyList<List<List<string>>>展平为List<List<string>> < / p>

答案 1 :(得分: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();

答案 2 :(得分: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);