Dynamic 亚音速动态查询表达式

Dynamic 亚音速动态查询表达式,dynamic,subsonic,expression,Dynamic,Subsonic,Expression,在亚音速的表达上,我有一些问题,比如试图生活在亚音速的世界里,做一个亚音速的女孩 阅读后,我似乎不是唯一一个有这种问题的人,但希望有人(全能的罗布??)能回答这个问题 我正在尝试根据循环条件在查询中创建表达式。我想要实现的(在伪代码中)是这样的: objQuery.andexpressionstart(); foreach (condition in conditions){ if (condition){ objQuery.and(conditionColumn).ise

在亚音速的表达上,我有一些问题,比如试图生活在亚音速的世界里,做一个亚音速的女孩

阅读后,我似乎不是唯一一个有这种问题的人,但希望有人(全能的罗布??)能回答这个问题

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

objQuery.andexpressionstart();

foreach (condition in conditions){

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

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

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

一如既往,谢谢你的帮助
干杯

我现在没有时间测试这一点,但我认为,如果您执行以下操作,应该会奏效:

bool isFirstCondition = true;

foreach (condition in conditions){

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

        }
   }

}

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

我现在没有时间测试,但我认为如果您执行以下操作,应该可以:

bool isFirstCondition = true;

foreach (condition in conditions){

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

        }
   }

}

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

我有一个问题,因为我有多个“表达式”,我的理解是,当使用“AndExpression”时,它将对所有内容进行分组,直到调用下一个“AndExpression”。(第一表达式和(第二表达式和(第三表达式)),其中每个表达式可以包含任意数量的条件。我有一个问题,我有不止一个“表达式”,我的理解是,当你使用“AndExpression”时,它会将所有内容分组,直到调用下一个“AndExpression”。(第一表达式和(第二表达式和(第三表达式)),其中每个表达式可以包含任意数量的条件。请尝试并检查正在生成的SQL。