2009-06-04 9 views
0

私は亜音速の世界に住んでしようと、それは亜音速の表現に来るとき、亜音速の女の子であることにはいくつかの問題を抱えています....亜音速の動的クエリ式

Subsonic Query (ConditionA OR ConditionB) AND ConditionCを読んだ後、それは私はないです現れるでしょうこの種の問題では1つだけですが、うまくいけば誰か(全能の強盗?)がこれに答えることができます。

ループ条件に基づいてクエリに式を作成しようとしています。私は(擬似コードで)達成したいことは、このようなものです:

objQuery.andexpressionstart(); 

foreach (condition in conditions){ 

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

} 
objQuery.expressionstop(); 

私の主な問題は、式の中で、各条件が異なる列であるということである - そう私はちょうど.IN()を使用することができます。私は余分な検索基準(公正なビットを読む)がありますので、式の外に出ることはできません。

私は本当に強く型付けされた亜音速子宮の暖かいcoseynessを残したいとは思わないが、このインスタンスでは私もそうかもしれないと思う...もし私がそこに亜音速私は、クエリ内の他のすべてのコードを変更する必要はありませんので、手でクエリは、いつものように(今の亜音速の土地に住んでビジネスロジックの多く) 歓声

答えて

3

任意の助けに感謝を

を条件を入力しました私はこれを今すぐテストする時間がありませんが、次のようなことをすればうまくいくと思います。

bool isFirstCondition = true; 

foreach (condition in conditions){ 

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

     } 
    } 

} 

他のすべての条件がループの前に追加されていることを確認してください。

+0

私は、複数の "式"があるという事実に問題があります。 – Doug

+1

"AndExpression"を使用すると、次の "AndExpression"が呼び出されるまですべてがグループ化されます。 (最初の式と(2番目の式と(3番目の式))) ここで、各式には任意の数の条件を含めることができます。 これを試して、どのSQLが生成されているかを確認してください。 – ptutt

+0

上記は素晴らしいです!...素晴らしい仕事、ありがとう:) – Doug