如何将两个子列表的值复制到c#中的单个列表中?

时间:2016-02-24 05:33:02

标签: c# list ienumerable sublist

我有一个列表

的集合
List<List<int>> FS=new List<List<int>>()

我已将值添加到每个列表中。现在我的FS看起来像FS={{1,2,3},{5,7},{3}}

如何将前两个子列表的值组合成一个新列表? 我需要得到{1,2,3,5,7}

5 个答案:

答案 0 :(得分:2)

如果FS始终包含2个或更多项,请使用List.AddRange()

FS[0].AddRange(FS[1]);

修改

以上示例将编辑原始列表。如果您想要一个新列表,您应该创建一个新列表并使用AddRange向其添加值:

List<int> newList = new List<int>();
newList.AddRange(FS[0]);
newList.AddRange(FS[1]);

答案 1 :(得分:1)

同时使用GetRangeSelectMany

FS = FS.GetRange(0, 2).SelectMany(x => x).ToList();

GetRange是从N获取N = 2(在您的情况下为List)个元素数量。

{{1,2,3},{5,7},{3}} => {{1,2,3},{5,7}}

SelectMany用于将List<List<int>>展平为List<int>

{{1,2,3},{5,7}} => {1,2,3,5,7}

答案 2 :(得分:1)

由于您要合并前两个Lists,您可以使用Take获取前两个集合,之后您可以使用SelectMany来收集集合的线性集合。

FS.Take(2).SelectMany(e=>e);

要消除重复项,请使用Distinct

FS.Take(2).SelectMany(e=>e).Distinct();

工作Demo

答案 3 :(得分:0)

如果要组合所有三个列表并仅选择不同的项目,则可以使用distinct进行联合。

 FS.SelectMany(list => list).Distinct();

如果只想组合前两个列表。然后你必须只过滤两个项目或选择列表中的前两项,然后进行联合。

FS.Take(2).SelectMany(list => list).Distinct();

答案 4 :(得分:0)

您需要在List

中使用'AddRange'方法
List<int> combinedList = new List<int>(FS[0]);
combinedList.AddRange(FS[1]);