Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于展平的Lambda表达式_C# - Fatal编程技术网

C# 用于展平的Lambda表达式

C# 用于展平的Lambda表达式,c#,C#,我有一个a的集合,其中包含B和C成员 比如说 Class A { } Class B: A { } Class C: A { B children; } 我想要的结果是: collection A -B -B -C -B -B 我需要使用lambda表达式从中提取所有B类型的集合。想法?你想要的是很多 这是我不久前制作的一个简单演示,演示了

我有一个a的集合,其中包含B和C成员

比如说

Class A
{

}

Class B: A
{

}

Class C: A
{
   B children;
}
我想要的结果是:

collection  A
             -B
             -B
             -C
               -B
               -B

我需要使用lambda表达式从中提取所有B类型的集合。想法?

你想要的是很多

这是我不久前制作的一个简单演示,演示了Select和SelectMany之间的区别


编辑:进一步查看后,看起来您真正想要的可能是。对于类型,我会这样做

首先,获取列表中的元素B

然后,与列表中的C元素联合,并选择它们的子元素a和B

B
B
B
B
但是您的示例不清楚或者不适合您的伪模型:children是单个属性还是集合


如果它是一个集合,请使用SelectMany而不是Select。

您能展示您迄今为止的尝试吗?我是c新手,尝试过使用SelectMany,但无法理解如何获得它。欢迎使用StackOverflow!我可以看出你还是一个新手,只是想给你一些建议:首先,在发布SO时,一定要在你原来的帖子中包含你尝试过的任何代码或东西。可以说你对一门语言也是新手。我对你的问题投了更高的票,因为对于C语言新手来说,这是一项很难解决的任务,而且我认为这篇文章不应该得到-3分。只要记住在将来的行动中包含这些细节,你就会做得很好。祝你好运和快乐1这在深度未知的情况下不起作用,只能在深度为2的情况下起作用。我已经给了他解决问题所需的工具。现在回想起来,有一个更好的答案。即使如此,这也不是一个错误的答案,它只是要求他把各个部分放在一起。不是真的,不是。事实上,解决遍历树的问题比使用SelectMany要复杂得多。事实上,我见过的最好的解决方案根本不用它。考虑到它不能解决问题,是的,它是错误的。如果深度超过2怎么办?@Servy-参考OP;深度不得大于two@Servy我可能错过了一些东西,但这种结构怎么会发生这种情况呢?最终,这并不重要。这说明了如何解决这个问题,即使最终应用程序略有不同。这就是我一直在寻找的。非常感谢。
var list = yourList.OfType<B>()
           .Union(yourList.OfType<C>().Select(x => x.children);