FirstOrDefault收集对象

Ben*_*ams 3 c# linq

我有类似以下类的东西:

public class Animal
{
    ...
}

public class Cow : Animal
{
    ...
}

public class AnimalCollection : List<Animal>
{
    public Animal GetFirstAnimal<T>()
    {
        foreach(Animal animal in this)
        {
            if(animal is T)
                return T as Animal
        }

        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

几个问题:是否可以在集合上使用FirstOrDefault而不是GetFirstAnimal()方法?如果可以的话会是什么语法?哪个也最有效?它不会是一个庞大的集合.

或者,有没有更好的方法一起做同样的事情?

Bry*_*tts 11

var firstCow = animals.OfType<Cow>().FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)