#vb.net
#vb.net
Вопрос:
Я использую LINQ — VB.Net
Я хочу отфильтровать свой объект списка, передав объект String в where.
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:
Убедитесь, что выходные данные 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()
Комментарии:
1. «Не удалось привести объект типа ‘WhereListIterator
1[RTS.BusinessEntities.Tap100transCodeInfo]' to type 'System.Collections.Generic.IList
1[RTS.BusinessEntities. Коснитесь 100transcodeinfo]’.»2. @user706311 добавил дополнение.