使用linq过滤可观察的集合

时间:2014-03-05 21:28:46

标签: c# linq

我有动物课。继承自动物的herbivore类和继承自elephant的{​​{1}}类。我还有一个继承自herbivore的{​​{1}}类和一个继承自carnivore的{​​{1}}类。我有一个名为动物园的可观察的收藏品,里面有老虎和大象。我想在动物园收藏中选择草食动物。然后我想将食草动物添加到一个名为herb的新的可观察集合中。

animal

1 个答案:

答案 0 :(得分:3)

你不能那样使用OfType;它是可枚举集合的扩展方法,而不是类animal上的扩展方法。这样做:

var herbivores = zoo.OfType<Herbivore>();

或者你可以用

达到同样的效果
var herbivores = zoo.Where(a => a is Herbivore);

但实际上没有必要采用这种时髦的方式。