2009-12-16 173 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

相關問題