Exemple #1
0
        ICode Convert(UnaryExpression unary)
        {
            switch (unary.NodeType)
            {
            case ExpressionType.Not:
                return(NotAddBrankets(Convert(unary.Operand)));

            case ExpressionType.Convert:
                var ret   = Convert(unary.Operand);
                var param = ret as ParameterCode;
                if (param != null && param.Value != null && !SupportedTypeSpec.IsSupported(param.Value.GetType()))
                {
                    var casted = ExpressionToObject.ConvertObject(unary.Type, param.Value);
                    return(new ParameterCode(param.Name, param.MetaId, new DbParamValueOnly()
                    {
                        Value = casted
                    }));
                }
                return(ret);

            case ExpressionType.ArrayLength:
                object obj;
                ExpressionToObject.GetExpressionObject(unary.Operand, out obj);
                return(new ParameterCode(((Array)obj).Length));

            default:
                return(Convert(unary.Operand));
            }
        }