Remotion.Linq.SqlBackend.SqlGeneration.BinaryExpressionTextGenerator.GenerateSqlForInfixOperator C# (CSharp) Метод

GenerateSqlForInfixOperator() приватный Метод

private GenerateSqlForInfixOperator ( Expression left, Expression right, ExpressionType nodeType, Type expressionType ) : void
left System.Linq.Expressions.Expression
right System.Linq.Expressions.Expression
nodeType ExpressionType
expressionType System.Type
Результат void
    private void GenerateSqlForInfixOperator (Expression left, Expression right, ExpressionType nodeType, Type expressionType)
    {
      if (nodeType == ExpressionType.And && BooleanUtility.IsBooleanType (expressionType))
        GenerateSqlForInfixOperator (left, right, ExpressionType.AndAlso, expressionType);
      else if (nodeType == ExpressionType.Or && BooleanUtility.IsBooleanType (expressionType))
        GenerateSqlForInfixOperator (left, right, ExpressionType.OrElse, expressionType);
      else if (nodeType == ExpressionType.ExclusiveOr && BooleanUtility.IsBooleanType (expressionType))
      {
        // SQL has no logical XOR operator, so we simulate: a XOR b <=> (a AND NOT b) OR (NOT a AND b)
        var exclusiveOrSimulationExpression = Expression.OrElse (
            Expression.AndAlso (left, Expression.Not (right)), 
            Expression.AndAlso (Expression.Not (left), right));
        _expressionVisitor.VisitExpression (exclusiveOrSimulationExpression);
      }
      else
      {
        string operatorString = GetRegisteredOperatorString (nodeType);

        _expressionVisitor.VisitExpression (left);
        _commandBuilder.Append (" ");
        _commandBuilder.Append (operatorString);
        _commandBuilder.Append (" ");
        _expressionVisitor.VisitExpression (right);
      }
    }