0

当谈到亚音速表达时,我在尝试生活在亚音速世界并成为亚音速女孩时遇到了一些问题......

在阅读了Subsonic Query (ConditionA OR ConditionB) AND ConditionC之后,看来我不是唯一遇到此类问题的人,但希望有人(全能的抢劫??)可以回答这个问题。

我正在尝试根据循环条件在我的查询中创建一个表达式。我想要实现的(在伪代码中)是这样的:

objQuery.andexpressionstart();

foreach (condition in conditions){

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

}
objQuery.expressionstop();

我的主要问题是表达式中的每个条件都是不同的列 - 否则我可以只使用 .In() 。我在外面也有额外的搜索条件(读一点),所以它不能在表达式之外。

我真的不想离开强类型亚音速子宫的温暖舒适,但我认为在这种情况下我可能也有……如果我必须这样做,有没有办法用手添加到亚音速查询中输入条件,所以我不必更改查询中的所有其他代码(现在很多业务逻辑都生活在亚音速领域)

一如既往,感谢您的帮助

4

1 回答 1

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);

        }
   }

}

确保在循环之前添加了所有其他条件。

于 2009-06-04T06:11:29.433 回答