public static ReqlExpr TranslateBinary( ExpressionType type, ReqlExpr left, ReqlExpr right ) { switch( type ) { case ExpressionType.Equal: return left.Eq( right ); case ExpressionType.NotEqual: return left.Eq( right ).Not(); case ExpressionType.LessThan: return left.Lt( right ); case ExpressionType.LessThanOrEqual: return left.Le( right ); case ExpressionType.GreaterThan: return left.Gt( right ); case ExpressionType.GreaterThanOrEqual: return left.Ge( right ); case ExpressionType.And: case ExpressionType.AndAlso: return left.And( right ); case ExpressionType.Or: case ExpressionType.OrElse: return left.Or( right ); case ExpressionType.Not: throw new InvalidOperationException( "ExpresionType:Not cannot be called on a binary translation." ); case ExpressionType.Add: return left.Add( right ); case ExpressionType.Subtract: return left.Sub( right ); case ExpressionType.Multiply: return left.Mul( right ); case ExpressionType.Divide: return left.Div( right ); case ExpressionType.Modulo: return left.Mod( right ); default: throw new NotSupportedException( "Binary expression not supported." ); } }