/// <summary> /// Translates the <paramref name="unaryExpression"/> into a string representation. /// </summary> /// <param name="unaryExpression">The <see cref="DbUnaryExpression"/> to translate.</param> /// <returns><see cref="string"/></returns> protected override DbExpression VisitUnaryExpression(DbUnaryExpression unaryExpression) { string syntax; switch (unaryExpression.UnaryExpressionType) { case DbUnaryExpressionType.Not: syntax = string.Format("NOT {0}", Visit(unaryExpression.Operand)); break; case DbUnaryExpressionType.Cast: syntax = string.Format("CAST({0} AS {1})", Visit(unaryExpression.Operand), GetCastFunctionBody(unaryExpression.TargetType)); break; default: throw new ArgumentOutOfRangeException("unaryExpression", string.Format( "The UnaryExpressionType '{0}' is not supported", unaryExpression.UnaryExpressionType)); } return(ExpressionFactory.Sql(syntax)); }
/// <summary> /// Translates the <paramref name="unaryExpression"/> into a string representation. /// </summary> /// <param name="unaryExpression">The <see cref="DbUnaryExpression"/> to translate.</param> /// <returns><see cref="DbExpression"/></returns> protected virtual DbExpression VisitUnaryExpression(DbUnaryExpression unaryExpression) { var operandExpression = Visit(unaryExpression.Operand); if (!ReferenceEquals(operandExpression, unaryExpression.Operand)) { return(ExpressionFactory.MakeUnary(unaryExpression.UnaryExpressionType, operandExpression, unaryExpression.TargetType)); } return(unaryExpression); }
/// <summary> /// Creates a new <see cref="DbUnaryExpression"/>. /// </summary> /// <param name="unaryExpressionType">The <see cref="DbUnaryExpressionType"/> that specifies the type of unary expression to create.</param> /// <param name="operand">The <see cref="DbExpression"/> that represents the unary operand.</param> /// <param name="targetType">The <see cref="Type"/> that specifies the type to convert to.</param> /// <returns>A <see cref="DbUnaryExpression"/> instance.</returns> public DbUnaryExpression MakeUnary(DbUnaryExpressionType unaryExpressionType, DbExpression operand, Type targetType) { var unaryExpression = new DbUnaryExpression(unaryExpressionType, operand, targetType); return unaryExpression; }
/// <summary> /// Translates the <paramref name="unaryExpression"/> into a string representation. /// </summary> /// <param name="unaryExpression">The <see cref="DbUnaryExpression"/> to translate.</param> /// <returns><see cref="string"/></returns> protected override DbExpression VisitUnaryExpression(DbUnaryExpression unaryExpression) { string syntax; switch (unaryExpression.UnaryExpressionType) { case DbUnaryExpressionType.Not: syntax = string.Format("NOT {0}", Visit(unaryExpression.Operand)); break; case DbUnaryExpressionType.Cast: syntax = string.Format("CAST({0} AS {1})", Visit(unaryExpression.Operand), GetCastFunctionBody(unaryExpression.TargetType)); break; default: throw new ArgumentOutOfRangeException("unaryExpression", string.Format( "The UnaryExpressionType '{0}' is not supported", unaryExpression.UnaryExpressionType)); } return ExpressionFactory.Sql(syntax); }
/// <summary> /// Translates the <paramref name="unaryExpression"/> into a string representation. /// </summary> /// <param name="unaryExpression">The <see cref="DbUnaryExpression"/> to translate.</param> /// <returns><see cref="DbExpression"/></returns> protected virtual DbExpression VisitUnaryExpression(DbUnaryExpression unaryExpression) { var operandExpression = Visit(unaryExpression.Operand); if (!ReferenceEquals(operandExpression, unaryExpression.Operand)) return ExpressionFactory.MakeUnary(unaryExpression.UnaryExpressionType, operandExpression, unaryExpression.TargetType); return unaryExpression; }