2011-09-13 92 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();