通用父集合拆分为子集合

Mar*_*aro 4 c# ienumerable list .net-3.5

我有一份清单 IAnimal

List<IAnimal> Animals
Run Code Online (Sandbox Code Playgroud)

在这个列表中我有3个不同 Animal

  1. Cat 5个对象
  2. Dog 10个物体
  3. Cow 3个对象

如何生成3种不同的子Animal类型列表?

结果应该是

  1. List<Cat> Cats 包含5个对象
  2. List<Dog> Dogs 包含10个对象
  3. List<Cow> Cows 包含3个对象

我不介意使用不同的集合类型List.IEnumerable还是其他人?

Jon*_*eet 6

LINQ使这很简单:

var cats = animals.OfType<Cat>().ToList();
var dogs = animals.OfType<Dog>().ToList();
var cows = animals.OfType<Cow>().ToList();
Run Code Online (Sandbox Code Playgroud)