2009-06-04 9 views
0

J'ai quelques questions à essayer de vivre dans un monde subsonique et d'être une fille subsonique quand il vient à des expressions subsoniques ....expression requête dynamique Subsonic

après avoir lu Subsonic Query (ConditionA OR ConditionB) AND ConditionC Je suis ne semble pas la seulement un avec ce genre de problème mais j'espère que quelqu'un (le tout-puissant rob ??) peut répondre à ceci. Je tente de créer une expression dans ma requête en fonction d'une condition de bouclage. ce que je veux atteindre (dans le code pseudo) est quelque chose comme ceci:

objQuery.andexpressionstart(); 

foreach (condition in conditions){ 

    if (condition){ 
     objQuery.and(conditionColumn).isequalto(X); 
    } 

} 
objQuery.expressionstop(); 

mon principal problème est que chaque condition qui est dans l'expression est une autre colonne - je pourrais simplement utiliser autrement .En(). J'ai aussi des critères de recherche supplémentaires (lire un peu juste) à l'extérieur de sorte qu'il ne peut pas être en dehors d'une expression.

Je ne veux vraiment pas quitter la cordialité chaleureuse de l'utérus fortement typé-subsonique mais je pense que dans ce cas, je pourrais avoir aussi ... si je dois y at-il un moyen d'ajouter à un subsonique requête avec une condition tapé la main, donc je ne pas changer tout autre code dans la requête (beaucoup de vie logique métier dans la terre subsonique en ce moment)

Comme toujours, merci pour toute aide acclamations

Répondre

3

Je n'ai pas le temps de tester cela maintenant, mais je pense que si vous faites quelque chose comme ce qui suit devrait fonctionner:

bool isFirstCondition = true; 

foreach (condition in conditions){ 

    if (condition)  
    { 
     if(isFirstCondition) 
     { 
      objQuery.AndExpression(conditionColumn).isequalto(X); 
      isFirstCondition = false; 
     } 
     else 
     { 
      objQuery.and(conditionColumn).isequalto(X); 

     } 
    } 

} 

Assurez-vous que toutes vos autres conditions ont été ajoutées avant la boucle.

+0

J'ai un problème dans le fait que j'ai plus d'une "expression" – Doug

+1

ma compréhension est que lorsque vous utilisez "AndExpression" il regroupera tout jusqu'à ce que la prochaine "AndExpression" est appelée. (première expression et (deuxième expression et (troisième expression))) où chaque expression peut contenir n'importe quel nombre de critères. Essayez-le et vérifiez quel code SQL est généré. – ptutt

+0

Les travaux ci-dessus génial! ... excellent travail, merci :) – Doug

Questions connexes