protected virtual Expression AnalyzeBinaryOperator(BinaryExpression expression, TranslationContext context) { // Detect if it is a logical expression - if yes, check for bit column argument var isLogicOp = expression.Left.Type == typeof(bool); // process arguments var ops = expression.GetOperands(); var newOps = ops.Select(op => CheckBoolBitExpression(Analyze(op, context))).ToList(); //special case - string + string; this used to be in PrequelAnalyzer if (expression.NodeType == ExpressionType.Add && expression.Left.Type == typeof(string)) return CreateSqlFunction(SqlFunctionType.Concat, newOps[0], newOps[1]); //general case var newExpr = expression.ChangeOperands(newOps, ops); // Check bitwise op var result = CheckBitwiseOp(newExpr); return result; }