C# 通用父集合拆分为子集合
我有一个IAnimal的列表C# 通用父集合拆分为子集合,c#,list,.net-3.5,ienumerable,C#,List,.net 3.5,Ienumerable,我有一个IAnimal的列表 List<IAnimal> Animals 列出动物 在此列表中,我有3种不同的动物 List<IAnimal> Animals Cat5个对象 Dog10个对象 Cow3个对象 如何生成子动物类型的3个不同列表 结果应该是 列出猫包含5个对象 列出狗包含10个对象 列表奶牛包含3个对象 我不介意使用不同的收集类型,然后ListIEnumerable或任何其他?LINQ使这一点变得简单: var cats = animals.OfTyp
List<IAnimal> Animals
列出动物
在此列表中,我有3种不同的动物
List<IAnimal> Animals
Cat
5个对象
Dog
10个对象
Cow
3个对象
如何生成子动物类型的3个不同列表
结果应该是
列出猫
包含5个对象
列出狗
包含10个对象
列表奶牛
包含3个对象
我不介意使用不同的收集类型,然后List
<代码>IEnumerable
或任何其他?LINQ使这一点变得简单:
var cats = animals.OfType<Cat>().ToList();
var dogs = animals.OfType<Dog>().ToList();
var cows = animals.OfType<Cow>().ToList();
var cats=animals.OfType().ToList();
var dogs=动物。of type().ToList();
var cows=动物。OfType().ToList();
使用foreach
或LINQ
遍历列表,并检查类型:
foreach(IAnimal animal in Animals){
if(animal is Cat)
Cats.Append(animal);
//do the same with dogs and cows
}
用它怎么样
根据指定类型筛选IEnumerable的元素
返回值
类型:System.Collections.Generic.IEnumerable
一个IEnumerable,包含TResult类型输入序列中的元素。
var cat=animals.OfType().ToList();
var cow=动物。OfType().ToList();
var dog=animals.OfType().ToList();
注意,您必须强制转换,方法是Add
,而不是Append
。
var cat = animals.OfType<Cat>().ToList();
var cow = animals.OfType<Cow>().ToList();
var dog = animals.OfType<Dog>().ToList();