如何使用 lambda 表达式避免 IEnumerable 嵌套在另一个 IEnumerable 中

How can I avoid IEnumerable nested in another IEnumerable using lambda expressions

提问人:Patric 提问时间:3/15/2022 最后编辑:marc_sPatric 更新时间:3/30/2022 访问量:68

问:

我正在重构一些代码,这些代码目前由另一个 foreach 中的 foreach 组成,以获取类型列表。稍后,在这些类型上执行一些操作。

在我以另一个内部结束的那一刻,我想有最终的类型列表(例如IEnumerable或Type[])进行处理。IEnumerableIEnumerable

我怎样才能展开我的结果,这样我就不会嵌套(在一个里面)?IEnumerableIEnumerableIEnumerable

这是(简化的)我当前的代码:

var types = assemblies.Select(asm => asm.GetExportedTypes()
                        .Where(t => typeof(IMyCustomValidator).IsAssignableFrom(t) && !t.IsInterface));

这将导致类型为 。typesIEnumerable<IEnumerable<Type>>

我相信这个问题应该有一个相当简单的解决方案,但我无法解决这个问题。

C# Lambda 重构 IEnumerable 嵌套列表

评论

2赞 jdweng 3/15/2022
使用 SelectMany 将两级数组减少到一级。
2赞 Aht 3/15/2022
你试过用吗?selectmany
0赞 Patric 3/15/2022
啊,哇,...这么简单。我知道应该有一个简单的方法,但我相信我以前没有使用过 SelectMany - 现在我这样做了:-)
0赞 Patric 4/5/2022
有人应该发表他们的评论作为答案。

答: 暂无答案