Дозвуковое динамическое выражение запроса - PullRequest
0 голосов
/ 04 июня 2009

У меня есть несколько проблем с попыткой жить в дозвуковом мире и быть дозвуковой девушкой, когда дело доходит до дозвуковых выражений ....

после прочтения Дозвуковой запрос (ConditionA ИЛИ ConditionB) И ConditionC может показаться, что я не единственный, кто сталкивается с такой проблемой, но, надеюсь, кто-то (всемогущий ограбитель ??) сможет ответить на этот вопрос.

Я пытаюсь создать выражение в своем запросе на основе условия цикла. то, что я хочу достичь (в псевдокоде), примерно так:

objQuery.andexpressionstart();

foreach (condition in conditions){

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

}
objQuery.expressionstop();

Моя главная проблема заключается в том, что каждое условие внутри выражения - это отдельный столбец - в противном случае я мог бы просто использовать .In (). у меня также есть дополнительные критерии поиска (читай немного) снаружи, поэтому они не могут быть вне выражения.

Я ДЕЙСТВИТЕЛЬНО не хочу покидать теплую однотонность со строго типизированной дозвуковой маткой, однако я думаю, что в этом случае у меня тоже может быть ... если мне НУЖНО, есть ли способ добавить к дозвуковому запросу с условием ввода вручную, так что мне не нужно менять весь другой код в запросе (сейчас много бизнес-логики, живущей в дозвуковой земле)

Как всегда, спасибо за любую помощь ура

1 Ответ

3 голосов
/ 04 июня 2009

У меня нет времени, чтобы проверить это прямо сейчас, но я думаю, что если вы сделаете что-то вроде следующего, должно сработать:

bool isFirstCondition = true;

foreach (condition in conditions){

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

        }
   }

}

Убедитесь, что все остальные условия были добавлены до цикла.

...