如何从散列集中获取c#中特定子类的所有元素?

时间:2017-03-17 11:49:57

标签: c#

让我们说我们有动物,狗和猫类。狗和猫都延伸动物。

public class Animal{}  
public class Dog : Animal{}  
public class Cat : Animal{}  

然后我们制作一个动物的游戏集,并用猫和狗填充它。

HashSet<Animal> animals = new HashSet<Animal>();  
animals.Add(new Dog());  
animals.Add(new Cat());  
animals.Add(new Dog());  
animals.Add(new Cat());  

获取hashset动物中包含的所有狗(除了狗之外)的哈希集或列表的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用LINQ。

var dogs = animals.Where(x => x.GetType() == typeof(Dog)).ToList();

或更短且处理空值

var dogs = animals.Where(x => x is Dog).ToList();

101 LINQ examples