2011-04-13 90 views
1

我使用LINQ - VB.Netvb.net - LINQ - 過濾列表對象

我想通過傳遞String對象在哪裏我的過濾列表對象。

Dim _permittedTransactionCodes As List(Of String) = Nothing 'String object 

它填充了數據。

Dim tap100transCodeInfos As List(Of Tap100transCodeInfo) = _dal.GetActiveTap100transCodeByHdrScreenCde(UCase(screenId), "TRAN_CDE") 

我試圖下面的東西,但沒有得到過濾後的結果

tap100transCodeInfos.Where(Function(x) _permittedTransactionCodes.Contains(x.TranCde)) 

什麼想法?

感謝

回答

4

確保將Where函數的輸出分配給一個變量。 Where不會過濾現有列表,但會返回一個新的過濾列表。

Dim result As IEnumerable(Of Tap100transCodeInfo) = _ 
    tap100transCodeInfos.Where(Function(x) _ 
     _permittedTransactionCodes.Contains(x.TranCde) _ 
    ) 

然後result應該有過濾結果。

編輯:

Where返回IEnumerable(Of T)因此,如果您分配輸出到你需要追加.ToList()到語句的結束(或定義tap100transCodeInfos是從一開始就IEnumerable(Of Tap100transCodeInfo))相同的變量。

tap100transCodeInfos = _ 
    tap100transCodeInfos.Where(Function(x) _ 
     _permittedTransactionCodes.Contains(x.TranCde) _ 
    ).ToList() 
+0

「無法投型的 'WhereListIterator'1 [RTS.BusinessEntities.Tap100transCodeInfo]' 爲類型 'System.Collections.Generic.IList'1 [RTS.BusinessEntities.Tap100transCodeInfo]' 對象」。 – user706311 2011-04-13 15:52:48

+0

@ user706311增加了一個附錄。 – diceguyd30 2011-04-13 16:47:32