2011-03-16 2 views
0

J'ai une liste que les utilisateurs peuvent sélectionner dans une liste si Villes, je veux être en mesure de construire une requête LINQ basée sur les éléments sélectionnés dans la liste, par exemple.Construction d'une requête LINQ dynamique

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 

J'ai fait des recherches LinqKit comme il semble être en mesure de faire ce que je dois, mais je ne peux pas après les heures d'essayer faire des progrès. Je ne peux rien trouver dans VB qui se traduit par quelque chose de significatif ou utilisable.

Répondre

1

juste eu un moment d'Eureka et plutôt que d'utiliser prédicat je suis venu avec cette ...

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 

Comme une note J'utilise c.MyData comme la nature de InitialQuery exige un certain nombre de champs structurés (la requête est réutilisée à partir de diverses tables qui, par mauvaise conception, ne sont pas très cohérentes).