vb.net - linq - 过滤列表对象

时间:2011-04-13 15:14:05

标签: vb.net

我正在使用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))

任何想法?

由于

1 个答案:

答案 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()