C# 这个代码有LINQ等价物吗?

C# 这个代码有LINQ等价物吗?,c#,linq,C#,Linq,我绝对是LINQ的初学者 GetAnimals()的代码可以用LINQ编写吗 ObservableCollection<Animal> allAnimals = new ObservableCollection<Animal>(); public IEnumerable<T> GetAnimals<T>() where T: Animal { foreach (var animal in allAnimals) if (a

我绝对是LINQ的初学者

GetAnimals()
的代码可以用LINQ编写吗

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;
}
ObservableCollection allAnimals=新的ObservableCollection();
public IEnumerable GetAnimals()其中T:Animal
{
foreach(动物中的变种动物)
if(animal.GetType()==typeof(T))
收益率(T)动物;
}

此已存在扩展方法:

此已存在扩展方法:

您想要:

public IEnumerable GetAnimals(),其中T:Animal
{
返回allAnimals.OfType();
}
您需要:

public IEnumerable GetAnimals(),其中T:Animal
{
返回allAnimals.OfType();
}

这比我强——尽管把它推向一个新的领域似乎有点难method@Chris,新方法将给它额外的约束,其中T:Animal。这可能是个好主意。我记得为什么我现在把它变成了一个方法——allAnimals是私有的,这是一个访问器方法。快告诉我吧——尽管把它推广到一个新的领域似乎有点过分method@Chris,新方法将给它额外的约束,其中T:Animal。这可能是个好主意。我记得为什么我现在把它作为一个方法——allAnimals是私有的,这是一个访问器方法。
public IEnumerable<T> GetAnimals<T>() where T: Animal
{
    return allAnimals.OfType<T>();
}