2009-08-24 5 views
1

J'ai un projet LLBLGen Pro qui a généré le code VB.Net 2.0 Self Service.LLBLGen Pro: Comment évaluer un EntityField pour une chaîne donnée

J'ai une fonction pour retourner une liste de structures personnalisées basées sur une recherche utilisant le code généré.

Je voudrais fournir un dictionnaire de FieldNames et Valeurs à cette fonction et pour chacun ajouter une nouvelle expression de prédicat à la recherche.

Comment puis-je vérifier la chaîne dans le dictionnaire qui représente le nom du champ et déterminer quel EntityField pour ajouter l'expression Predciate?

Exemple de code

Dim dbFiles As New AllFilesCollection 
Dim dbFilter As New PredicateExpression 

If Not String.IsNullOrEmpty(ClientName) Then 
    dbFilter.Add(New PredicateExpression(AllFilesFields.ClientMenuName = ClientName)) 
End If 

If Not String.IsNullOrEmpty(SearchText) Then 
    dbFilter.Add(New FieldLikePredicate(AllFilesFields.ClientReference, "%" & SearchText & "%")) 
    dbFilter.AddWithOr(New FieldLikePredicate(AllFilesFields.Cmsnumber, "%" & SearchText & "%")) 
End If 

For Each Filter As KeyValuePair(Of String, String) In Filters 

    'Custom code here to determine the field to add a filter for. 

Next 

dbFiles.GetMulti(dbFilter) 
+0

Avez-vous demandé cela sur les forums de soutien à LLBLGen - vous êtes plus susceptible d'obtenir une réponse là-bas ... – Matt

Répondre

1

Je pense que cette question a été ignorée parce qu'il ressemble à une question LLBLGen, mais il est probablement pas.

Si vous connaissez toutes vos colonnes:

  • Ville
  • État
  • Zip

Ensuite, il vous suffit de convertir votre chaîne à ces valeurs comme celle-ci ...

For Each Filter As KeyValuePair(Of String, String) In Filters 
    Select Case filter.Key 
     Case "City" 
      dbFilter.Add(New PredicateExpression(AllFilesFields.City = filter.Value)) 
     Case "State" 
      dbFilter.Add(New PredicateExpression(AllFilesFields.State = filter.Value)) 
     Case "Zip" 
      dbFilter.Add(New PredicateExpression(AllFilesFields.Zip = filter.Value)) 
    End Select 
Next 
0

Vous pourriez également faire som Ething comme ceci:

Dim fields As IEntityFields = new AllFieldsEntityFactory().CreateFields(); 
For Each Filter As KeyValuePair(Of String, String) In Filters 
    dbFilter.Add((EntityField) fields[Filter.Key] == Filter.Value); 
Next 
Questions connexes