Построение динамического запроса LINQ

У меня есть список, который пользователи могут выбрать из списка, если город, я хочу иметь возможность построить запрос LINQ на основе выбранных элементов в списке, например

Dim ddlTowns As ListBox = CType(Filter_Accommodation1.FindControl("ddlTowns"), ListBox)
        If Not ddlTowns Is Nothing Then
            For Each Item In ddlTowns.Items
                If Item.Selected Then
                    '// Build query
                End If
            Next
        End If

Я исследовал LinqKit, так как он, похоже, способен делать то, что мне нужно, но я не могу после нескольких часов попыток добиться успеха. Я не могу найти ничего в VB, что переводит во что-то значимое или полезное.

2 ответа

Просто был момент Eureka и вместо использования предиката я придумал это...

Private Function Filter_Accommomdation_QueryBuilder() As IEnumerable

            Dim ddlTowns As ListBox = CType(Filter_Accommodation1.FindControl("ddlTowns"), ListBox)
            Dim myList As New List(Of String)
            If Not ddlTowns Is Nothing Then
                For Each Item In ddlTowns.Items
                    If Item.Selected Then
                        myList.Add(Item.value)
                    End If
                Next
            End If

            Dim Filter_Query = _
                       From c In InitialQuery _
                       Where myList.ToArray.Contains(c.MyData.element("townvillage").value) _
                       Select c
            Return Filter_Query


        End Function

Как примечание, я использую c.MyData, поскольку природа InitialQuery требует ряда структурированных полей (запрос повторно используется из различных таблиц, которые из-за плохого дизайна не очень согласованы).

Проверьте этот вопрос - содержит несколько полезных примеров VB для вас: Использование PredicateBuilder с VB.NET

Другие вопросы по тегам