2009-06-04 3 views
0
내가 아음속 세계에 살고 위해 노력하고 아음속 표현에 올 때 아음속 여자 인과 몇 가지 문제가 있어요

....음속 동적 쿼리 표현

Subsonic Query (ConditionA OR ConditionB) AND ConditionC을 읽은 후 내가하지 오전 나타납니다 이런 종류의 문제가있는 사람은 한 명 뿐이지만, 누군가 (전능자)가 대답 할 수는 있습니다.

루프 조건에 따라 쿼리에서 표현식을 만들려고합니다. 내가 (의사 코드) 달성하고자하는 것은이 같은 것입니다 :

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"이 호출 될 때까지 모든 것을 그룹화합니다. (첫 번째 표현식과 (두 번째 표현식 및 (세 번째 표현식))) 여기서 각 표현식은 여러 기준을 포함 ​​할 수 있습니다. 시험해보고 생성되는 SQL을 확인하십시오. – ptutt

+0

위의 작품은 대단합니다! ... 훌륭한 작품, 고마워요 :) – Doug