构建动态LINQ查询

时间:2011-03-16 00:02:07

标签: vb.net linq linq-to-objects custom-linq-providers

我有一个列表框,用户可以从列表中选择Towns,我希望能够根据列表中的选定项目构建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 个答案:

答案 0 :(得分:1)

刚刚有一个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的性质需要许多结构化字段(查询是从各种表中重用的,这些表由于设计不佳而不是很一致)。

答案 1 :(得分:0)

查看此问题 - 包含一些有用的VB示例:Using PredicateBuilder with VB.NET