2009-12-16 123 views
1

我绝对是LINQ的n00b。代码的LINQ等价物?

GetAnimals()的代码可以写在LINQ中吗?

class Farm 
{ 
    ObservableCollection<Animal> allAnimals = new ObservableCollection<Animal>(); 

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

回答

10

你想Enumerable.OfType

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

打我给它 - 尽管它似乎有点太多推出的新方法 – Chris

+0

+1 - 这种问题的最佳解决方案:) – cwap

+0

@Chris True。编辑。 – ICR

4

有已经为这个扩展方法:OfType

相关问题