LINQ -获取基于类型的子集

本文关键字:类型 子集 获取 于类型 LINQ | 更新日期: 2023-09-27 18:08:34

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

我希望从我的List<Animal>中选择所有的狗进入一个新的List<Dog>

如何在LINQ中完成?

LINQ -获取基于类型的子集

您可以使用Enumerable.OfType<T>:

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

(注意,ToList()只需要生成List<Dog>。如果你只需要IEnumerable<Dog>,你可以把它去掉

这样应该可以。

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