在亚音速2.2中嵌套和/或表达

时间:2011-07-01 09:07:17

标签: subsonic

我需要进行如下查询:

SELECT * from TABLE
    WHERE cola= "aaa"
        and
        (
            (colb = "bbb" and (colc="ccc" or colc = "ddd"))
            or
            (colb="eee" and colc = "fff")
        )

我尝试了Andexpression()orexpression()openexpression()closeexpression(),但我无法理解! 任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

WhereExpressionAndExpression等应该有效(另请参阅this question),但它并不是一直对我有效。

只要您的Where条款相对简单,您就可以添加一些重复并使用逻辑运算符优先级

SELECT * from TABLE
    WHERE cola="aaa" AND colb="bbb" AND colc="ccc"
          OR
          cola="aaa" AND colb="bbb" AND colc="ddd"
          OR
          cola="aaa" AND colb="eee" AND colc="fff"

这会导致类似这样的事情:

DB.Select().From<TABLE>()
    .Where(TABLE.colaColumn).isEqualTo("aaa")
        .And(TABLE.colbColumn).isEqualTo("bbb")
        .And(TABLE.colcColumn).isEqualTo("ccc")
    .Or(TABLE.colaColumn).isEqualTo("aaa")
        .And(TABLE.colbColumn).isEqualTo("bbb")
        .And(TABLE.colcColumn).isEqualTo("ddd")
    .Or(TABLE.colaColumn).isEqualTo("aaa")
        .And(TABLE.colbColumn).isEqualTo("eee")
        .And(TABLE.colcColumn).isEqualTo("fff")