2011-03-16 96 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的性質需要大量的結構化字段(查詢從各種表格中重用,而這些表格由於糟糕的設計不太一致)。