如何从多个List<>中获取所有元素?
在 C# 中,我有以下类型:
List<List<mytype>> MyLists;
List<mytype> MainList;
我想获取所有 List<> 中的每个元素放在 MyList 中并将它们放入 MainList 中。然后,MainList 将仅具有由每个 List<> 内的所有元素组成的元素。我的列表。我已尝试以下操作,但收到有关无法推断类型的错误:
MyLists.ForEach(list => MainList.AddRange(list.SelectMany(x => x != null)));
我不确定要在 SelectMany() 中放入什么,因为我想要 List<> 中的所有元素。这些元素不需要满足任何标准。
有什么建议可以如何做到吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
或者,如果你愿意的话,
Or, if you prefer,
这只需要一个 SelectMany 调用:
请注意,这不需要在此调用之前构造/初始化 MainList,因为它是通过
ToList()
调用完全初始化的。编辑:
由于您确实包含了
null
检查,如果您需要从列表中删除null
元素,您也可以添加该检查:和/或过滤器整个
null
列表:另外,如果您想添加项到您的
MainList
中,而不是创建MainList
"原始列表中只有元素”,您可以使用AddRange
仍然:This just requires a single SelectMany call:
Note that this doesn't require constructing/initializing MainList prior to this call, as it's completely initialized from the
ToList()
call.Edit:
Since you did include a
null
check, if you need to removenull
elements from within your list, you could add that check, as well:And/Or filter for entire
null
lists:Also, if you want to add items to your
MainList
, as opposed to makingMainList
"have only elements" in the original lists, you could useAddRange
still:另一种选择,更接近您最初的尝试:
MyLists.ForEach(list => MainList.AddRange(list));
换句话说,如果您使用 ForEach,则不需要 SelectMany 甚至 Select和添加范围。
Another option, closer to your original attempt:
MyLists.ForEach(list => MainList.AddRange(list));
In other words, you don't need SelectMany or even Select if you are using ForEach and AddRange.