-3
Class A
{

}

Class B: A
{

}

Class C: A
{
   B children;
}

我有一个包含 B 和 C 成员的 A 集合。

例如

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

我正在寻找的结果是:

B
B
B
B

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

4

2 回答 2

3

我会做这样的事情。

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

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

var list = yourList.OfType<B>()
           .Union(yourList.OfType<C>().Select(x => x.children);

但是您的样本不清楚(或者您的伪模型不正确): children 是单个属性还是集合?

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

于 2013-11-06T18:30:58.663 回答
0

您正在寻找的是 SelectMany。

http://pastebin.com/ZMD0NLZK

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

编辑:进一步看后,看起来你真正想要的可能是.OfType<B>()

于 2013-11-06T18:30:13.523 回答