2011-09-13 89 views
4

一个子集我有一个List<Animal>包含Cat型,DogPig(为简单起见)的对象LINQ - 获取基于类型

我想从我的List<Animal>选择所有的狗到一个新的List<Dog>

这在LINQ中是如何完成的?

回答

9

您可以使用Enumerable.OfType<T>

var dogs = animals.OfType<Dog>().ToList(); 

(注意ToList()只需要做出一个List<Dog>如果你只需要IEnumerable<Dog>,你可以把它关闭。)

+1

+1也是我的失败 –

2

像这样的东西应该工作。

var animals = new List<Animals> { new Dog(), new Cat(), new Pig(), }; //etc. 
var dogs = 
    animals 
    .OfType<Dog>() 
    .ToList();