Class A
{
}
Class B: A
{
}
Class C: A
{
B children;
}
我有一个A的集合,其中包含B和C成员。
例如
collection A
-B
-B
-C
-B
-B
我要找的结果是:
B
B
B
B
我需要使用lambda表达式从中提取所有B类型的集合。想法?
答案 0 :(得分:3)
我会做那样的事。
首先,获取列表中B的元素。
然后,与列表中C的元素结合,并选择他们的孩子(这是B)
var list = yourList.OfType<B>()
.Union(yourList.OfType<C>().Select(x => x.children);
但是你的样本不清楚(或者你的伪模型不正确):孩子是一个属性,还是一个集合?
如果是集合,请使用SelectMany
代替Select
。
答案 1 :(得分:0)
您正在寻找的是SelectMany。
这是一个简单的演示,我回过头来演示Select和SelectMany之间的区别。
编辑:进一步观察后,看起来你真正想要的可能是.OfType<B>()