我有一个列表
的集合List<List<int>> FS=new List<List<int>>()
我已将值添加到每个列表中。现在我的FS
看起来像FS={{1,2,3},{5,7},{3}}
。
如何将前两个子列表的值组合成一个新列表?
我需要得到{1,2,3,5,7}
答案 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)
同时使用GetRange
和SelectMany
:
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]);