Построение динамического запроса LINQ - PullRequest
0 голосов
/ 16 марта 2011

У меня есть список, который пользователи могут выбирать из списка, если город, я хочу иметь возможность строить запрос 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 ]

1 голос
/ 16 марта 2011

Только что у меня был момент Эврики, и вместо использования предиката я придумал это ...

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 требует ряда структурированных полей (запрос повторно используется из различных таблиц, которые из-за плохого дизайна не очень согласованы).

0 голосов
/ 16 марта 2011

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

...