2011-03-16 97 views
0

我有一个列表框,用户可以从列表中选择如果Towns,我希望能够基于列表中的选定项目来构建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中我找不到任何有意义或可用的东西。

回答

1

刚刚有了一个尤里卡时刻,而不是使用谓词我想出了这个...

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的性质需要大量的结构化字段(查询从各种表格中重用,而这些表格由于糟糕的设计不太一致)。