亚音速动态查询表达式

时间:2009-06-04 05:46:20

标签: dynamic subsonic expression

我遇到一些问题,试图生活在一个亚音阶世界,并且在亚音速表达方面成为一个亚音阶女孩......

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

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

objQuery.andexpressionstart();

foreach (condition in conditions){

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

}
objQuery.expressionstop();

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

我真的不想留下强烈型亚音子宫的温暖,但我认为在这种情况下我可能也有...如果我必须有一种方法来添加亚音速查询手动键入条件,所以我不必更改查询中的所有其他代码(现在很多生活在亚音速土地的商业逻辑)

一如既往,感谢您的帮助 欢呼声

1 个答案:

答案 0 :(得分: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);

        }
   }

}

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