internal static SqlScalarExpression VisitNonSubqueryScalarExpression()

in Microsoft.Azure.Cosmos/src/Linq/ExpressionToSQL.cs [216:284]


        internal static SqlScalarExpression VisitNonSubqueryScalarExpression(Expression inputExpression, TranslationContext context)
        {
            if (inputExpression == null)
            {
                return null;
            }

            switch (inputExpression.NodeType)
            {
                case ExpressionType.Negate:
                case ExpressionType.NegateChecked:
                case ExpressionType.Not:
                case ExpressionType.Convert:
                case ExpressionType.ConvertChecked:
                case ExpressionType.ArrayLength:
                case ExpressionType.Quote:
                case ExpressionType.TypeAs:
                    return ExpressionToSql.VisitUnary((UnaryExpression)inputExpression, context);
                case ExpressionType.Add:
                case ExpressionType.AddChecked:
                case ExpressionType.Subtract:
                case ExpressionType.SubtractChecked:
                case ExpressionType.Multiply:
                case ExpressionType.MultiplyChecked:
                case ExpressionType.Divide:
                case ExpressionType.Modulo:
                case ExpressionType.And:
                case ExpressionType.AndAlso:
                case ExpressionType.Or:
                case ExpressionType.OrElse:
                case ExpressionType.LessThan:
                case ExpressionType.LessThanOrEqual:
                case ExpressionType.GreaterThan:
                case ExpressionType.GreaterThanOrEqual:
                case ExpressionType.Equal:
                case ExpressionType.NotEqual:
                case ExpressionType.Coalesce:
                case ExpressionType.ArrayIndex:
                case ExpressionType.RightShift:
                case ExpressionType.LeftShift:
                case ExpressionType.ExclusiveOr:
                    return ExpressionToSql.VisitBinary((BinaryExpression)inputExpression, context);
                case ExpressionType.TypeIs:
                    return ExpressionToSql.VisitTypeIs((TypeBinaryExpression)inputExpression, context);
                case ExpressionType.Conditional:
                    return ExpressionToSql.VisitConditional((ConditionalExpression)inputExpression, context);
                case ExpressionType.Constant:
                    return ExpressionToSql.VisitConstant((ConstantExpression)inputExpression, context);
                case ExpressionType.Parameter:
                    return ExpressionToSql.VisitParameter((ParameterExpression)inputExpression, context);
                case ExpressionType.MemberAccess:
                    return ExpressionToSql.VisitMemberAccess((MemberExpression)inputExpression, context);
                case ExpressionType.New:
                    return ExpressionToSql.VisitNew((NewExpression)inputExpression, context);
                case ExpressionType.NewArrayInit:
                case ExpressionType.NewArrayBounds:
                    return ExpressionToSql.VisitNewArray((NewArrayExpression)inputExpression, context);
                case ExpressionType.Invoke:
                    return ExpressionToSql.VisitInvocation((InvocationExpression)inputExpression, context);
                case ExpressionType.MemberInit:
                    return ExpressionToSql.VisitMemberInit((MemberInitExpression)inputExpression, context);
                case ExpressionType.ListInit:
                    return ExpressionToSql.VisitListInit((ListInitExpression)inputExpression, context);
                case ExpressionType.Call:
                    return ExpressionToSql.VisitMethodCallScalar((MethodCallExpression)inputExpression, context);
                default:
                    throw new DocumentQueryException(string.Format(CultureInfo.CurrentCulture, ClientResources.ExpressionTypeIsNotSupported, inputExpression.NodeType));
            }
        }