示例#1
0
        /// <summary>
        /// Select
        /// </summary>
        /// <param name="expression">表达式树</param>
        /// <param name="sqlWrapper">sql包装器</param>
        /// <returns>SqlWrapper</returns>
        public override SqlWrapper Select(BinaryExpression expression, SqlWrapper sqlWrapper)
        {
            var field = expression?.ToObject();

            if (field != null)
            {
                SqlExpressionProvider.Select(Expression.Constant(field), sqlWrapper);
            }

            return(sqlWrapper);
        }
示例#2
0
        /// <summary>
        /// Select
        /// </summary>
        /// <param name="expression">表达式树</param>
        /// <param name="sqlWrapper">sql打包对象</param>
        /// <returns>SqlWrapper</returns>
        public override SqlWrapper Select(NewExpression expression, SqlWrapper sqlWrapper)
        {
            if (expression.Members != null)
            {
                for (var i = 0; i < expression.Members.Count; i++)
                {
                    var argument = expression.Arguments[i];
                    var member   = expression.Members[i];
                    SqlExpressionProvider.Select(argument, sqlWrapper);

                    //添加字段别名
                    if (argument is MemberExpression memberExpression && memberExpression.Member.Name != member.Name)
                    {
                        sqlWrapper.SelectFields[sqlWrapper.FieldCount - 1] += $" AS {sqlWrapper.GetFormatName(member.Name)}";
                    }
                    else if (argument is ConstantExpression constantExpression && constantExpression.Value?.ToString() != member.Name)
                    {
                        sqlWrapper.SelectFields[sqlWrapper.FieldCount - 1] += $" AS {sqlWrapper.GetFormatName(member.Name)}";
                    }
示例#3
0
        /// <summary>
        /// Select
        /// </summary>
        /// <param name="expression">表达式树</param>
        /// <param name="sqlWrapper">sql打包对象</param>
        /// <returns>SqlWrapper</returns>
        public override SqlWrapper Select(UnaryExpression expression, SqlWrapper sqlWrapper)
        {
            SqlExpressionProvider.Select(expression.Operand, sqlWrapper);

            return(sqlWrapper);
        }
        /// <summary>
        /// Select
        /// </summary>
        /// <param name="expression">表达式树</param>
        /// <param name="sqlWrapper">sql打包对象</param>
        /// <returns>SqlWrapper</returns>
        public override SqlWrapper Select(NewExpression expression, SqlWrapper sqlWrapper)
        {
            if (expression.Members != null)
            {
                for (var i = 0; i < expression.Members.Count; i++)
                {
                    var argument = expression.Arguments[i];
                    var member   = expression.Members[i];
                    SqlExpressionProvider.Select(argument, sqlWrapper);

                    var fieldName = sqlWrapper
                                    .SelectFields[sqlWrapper.FieldCount - 1]
                                    .Split('.')
                                    .LastOrDefault()?
                                    .Replace("[", "")
                                    .Replace("]", "")
                                    .Replace("\"", "")
                                    .Replace("`", "");

                    //添加字段别名
                    if (argument is MemberExpression memberExpression)
                    {
                        var agrumentName = memberExpression.Member.Name;

                        if (agrumentName != member.Name)
                        {
                            sqlWrapper.SelectFields[sqlWrapper.FieldCount - 1] += $" AS {sqlWrapper.GetFormatName(member.Name)}";
                        }

                        else if (agrumentName != fieldName)
                        {
                            sqlWrapper.SelectFields[sqlWrapper.FieldCount - 1] += $" AS {sqlWrapper.GetFormatName(agrumentName)}";
                        }
                    }
                    else if (argument is ConstantExpression constantExpression)
                    {
                        var agrumentName = constantExpression.Value?.ToString();

                        if (agrumentName != member.Name)
                        {
                            sqlWrapper.SelectFields[sqlWrapper.FieldCount - 1] += $" AS {sqlWrapper.GetFormatName(member.Name)}";
                        }

                        else if (agrumentName != fieldName)
                        {
                            sqlWrapper.SelectFields[sqlWrapper.FieldCount - 1] += $" AS {sqlWrapper.GetFormatName(agrumentName)}";
                        }
                    }
                    else if (argument is MethodCallExpression methodCallExpression)
                    {
                        var agrumentName = methodCallExpression.ToObject()?.ToString();

                        if (agrumentName != member.Name)
                        {
                            sqlWrapper.SelectFields[sqlWrapper.FieldCount - 1] += $" AS {sqlWrapper.GetFormatName(member.Name)}";
                        }

                        else if (agrumentName != fieldName)
                        {
                            sqlWrapper.SelectFields[sqlWrapper.FieldCount - 1] += $" AS {sqlWrapper.GetFormatName(agrumentName)}";
                        }
                    }
                    else if (argument is BinaryExpression binaryExpression)
                    {
                        var agrumentName = binaryExpression.ToObject()?.ToString();

                        if (agrumentName != member.Name)
                        {
                            sqlWrapper.SelectFields[sqlWrapper.FieldCount - 1] += $" AS {sqlWrapper.GetFormatName(member.Name)}";
                        }

                        else if (agrumentName != fieldName)
                        {
                            sqlWrapper.SelectFields[sqlWrapper.FieldCount - 1] += $" AS {sqlWrapper.GetFormatName(agrumentName)}";
                        }
                    }
                }
            }
            else
            {
                sqlWrapper.AddField("*");
            }

            return(sqlWrapper);
        }
        /// <summary>
        /// Select
        /// </summary>
        /// <param name="expression">表达式树</param>
        /// <param name="sqlWrapper">sql打包对象</param>
        /// <returns>SqlWrapper</returns>
        public override SqlWrapper Select(LambdaExpression expression, SqlWrapper sqlWrapper)
        {
            SqlExpressionProvider.Select(expression.Body, sqlWrapper);

            return(sqlWrapper);
        }