2011-01-13 38 views
0

我想寫一個泛型函數,它將搜索一個List(Of T)的TFilter類型的所有元素,並返回一個包含這些元素的List(Of TFilter)。我已經試過這樣:VB.NET通用列表類型過濾器:怎麼做?

Public Function FilterList(Of T, TFilter)(ByVal ListToFilter As List(Of T)) As List(Of TFilter) 
    Return ListToFilter.FindAll(Function(z) z.GetType.Equals(GetType(TFilter))).ConvertAll(New Converter(Of T, TFilter)(Function(z) CType(z, TFilter))) 
End Function 

但是,它提供了以下錯誤:

Value of type 'T' cannot be converted to 'TFilter'.

有沒有辦法做到這一點還是我SOL?

在此先感謝

+0

應該怎樣處理繼承`TFilter`的值? – SLaks 2011-01-13 23:13:20

回答

2

需要約束TFilter繼承T

Public Function FilterList(Of T, TFilter As T)(... 
+0

啊哈!非常感謝。 – 2011-01-13 23:13:09

2

你實際上不需要編寫任何代碼這一點。你可以叫

listToFilter.OfType(Of TFilter).ToList() 

有關詳細信息,請參閱該文檔爲Enumerable.OfType

(我假設你使用的是.NET 3.5或更高版本。)

+0

Oooh ...我不知道。謝謝你的提示! – 2011-01-14 10:14:10