c# - 通用父集合拆分为子集合

标签 c# list .net-3.5 ienumerable

我有一个 IAnimal 的列表

List<IAnimal> Animals

在此列表中,我有 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还是其他人?

最佳答案

LINQ 使这变得简单:

var cats = animals.OfType<Cat>().ToList();
var dogs = animals.OfType<Dog>().ToList();
var cows = animals.OfType<Cow>().ToList();

关于c# - 通用父集合拆分为子集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15310813/

相关文章:

c# - 如何防止 C# 转义我的字符串?

python - 如何访问另一个列表中每个列表的第 n 个元素?

c# - 关于 c# lists 发送或返回它?

c# - 在c#中根据List<string>中的子串匹配生成新的List<string>

c# - Winforms DataGridView 数据绑定(bind)到复杂类型/嵌套属性

c# - 为什么在不影响其值的情况下允许在任何成员变量(即调用函数/属性)之前使用 '@'?

c# - 通过方法调用将自定义对象传递给 DLL

c# - 在 C# Coded UI 中,有一种方法可以等待控件可点击

c# - 确认字典中的所有键都已填充值

asp.net - 关于设置C#/Asp.Net 3.5应用程序自动构建器服务器的一些疑惑