这段代码是否有LINQ等价物?

时间:2009-12-16 11:26:28

标签: c# linq

我是LINQ的绝对初学者。

可以用LINQ编写GetAnimals<T>()的代码吗?

ObservableCollection<Animal> allAnimals = new ObservableCollection<Animal>();

public IEnumerable<T> GetAnimals<T>() where T: Animal
{
    foreach (var animal in allAnimals)
        if (animal.GetType() == typeof(T))
            yield return (T)animal;
}

2 个答案:

答案 0 :(得分:10)

您想要Enumerable.OfType

public IEnumerable<T> GetAnimals<T>() where T: Animal
{
    return allAnimals.OfType<T>();
}

答案 1 :(得分:4)

已有一种扩展方法:OfType