2010-08-09 85 views
1

的Linq有這個方便的功能Where,讓我過濾可枚舉的結果...C#/ Linq:其中X是Y?

foreach (var method in typeof(Program).GetMethods()) 
{ 
    foreach (var attr in method.GetCustomAttributes(inherit: true).Where(a => a is UrlAttribute)) 
    { 
     Console.WriteLine(((UrlAttribute)attr).Url); 
    } 
} 

但它似乎沒有檢索只是某種類型的對象非常方便,因爲我還是要投他們。 Linq沒有辦法解決這個問題,是嗎?


這是一個很好的解決方案嗎?

public static class Extensions 
{ 
    public static IEnumerable<T> OfType<T>(this IEnumerable<object> e) 
    { 
     return e.Where(x => x is T).Cast<T>(); 
    } 
} 

我正在學習如何編寫自己的屬性,我試圖找出如何現在檢索它們。

+4

OfType已經是linq的內置擴展,我不知道你爲什麼要實現自己的 – 2010-08-09 01:27:46

+1

@Fadrian:我不會>。<我只是愚蠢的。 – mpen 2010-08-09 01:39:50

回答

7

我很確定該方法已經存在。

http://msdn.microsoft.com/en-us/library/bb360913.aspx

我失去了你的問題的東西嗎?

+0

哈哈哈......我在intellisense彈出窗口中尋找這樣一個方法,但想不到它會被調用,所以我認爲它不存在。然後我開始寫我自己的方法,並認爲「OfType」將是一個很好的名字....去數字。 – mpen 2010-08-09 01:38:13

相關問題