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));
}
}