我有一个列表框,用户可以从列表中选择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中找不到任何有意义或可用的东西。
答案 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