O/Rマッパーで条件の指定

色々とデータアクセスライブラリを見てきましたが、OR条件の指定で面白かったのは、LightSpeedでしょうか。
こんな感じで、C#のオペレータと括弧で、SQLの条件を指定します。

//条件を3つ設定
QueryExpression 条件1 = Fooエンティティ.Attribute("列A") >= 1;
QueryExpression 条件2 = Fooエンティティ.Attribute("列B").Like("%hoge%");
QueryExpression 条件3 = Fooエンティティ.Attribute("列C") == "moge";

//条件1ではなく、かつ、条件2もしくは条件3
QueryExpression 結合条件 = !条件1 && (条件2 || 条件3);

QueryExpressionというクラスが、式木になっていて左辺と右辺を保持してネストできる。というような作りだったと思う。

ちなみにSubSonic2.1はメソッドチェインでANDとORを同列に書けた結果、どんなSQLを投げてるのか分かりにくかった。