我正在使用LINQ - VB.Net
我想通过在where。中传递String对象来过滤我的List对象。
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))
任何想法?
由于
答案 0 :(得分: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()