LINQ - 根据类型获取子集

时间:2011-09-13 19:39:19

标签: c# linq

我有一个List<Animal>,其中包含CatDogPig类型的对象(为简单起见)

我希望从我的List<Dog>中选择所有狗成为新的List<Animal>

如何在LINQ中完成?

2 个答案:

答案 0 :(得分:9)

您可以使用Enumerable.OfType<T>

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

(请注意ToList()只需要制作List<Dog>。如果您只需要IEnumerable<Dog>,则可以将其关闭。)

答案 1 :(得分:2)

这样的事情应该有效。

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