Esempio n. 1
0
        internal override LinqExtender.Ast.Expression VisitMethodCallExpression(LinqExtender.Ast.MethodCallExpression methodCallExpression)
        {
            if (methodCallExpression.IsTake)
            {
                this.pageBuilder.Append(string.Format(CultureInfo.InvariantCulture, " maxResults {0} ", methodCallExpression.Paramters[0].Value));
            }

            if (methodCallExpression.IsSkip)
            {
                int skip = Convert.ToInt32(methodCallExpression.Paramters[0].Value, CultureInfo.InvariantCulture);
                this.pageBuilder.Append(string.Format(CultureInfo.InvariantCulture, " startPosition {0} ", (skip + 1)));
            }

            if (methodCallExpression.Method.Name == "StartsWith" || methodCallExpression.Method.Name == "EndsWith" || methodCallExpression.Method.Name == "Contains")
            {
                this.whereBuilder.Append(" AND ");
                if (this.IsNotUsed(methodCallExpression.Target.ToString()))
                {
                    this.whereBuilder.Append(" NOT ");
                }

                if (methodCallExpression.Method.Name == "Contains")
                {
                    this.whereBuilder.Append(string.Format(CultureInfo.InvariantCulture, " {0} {1} '%{2}%' ", methodCallExpression.Target, "like", methodCallExpression.Paramters[0].Value));
                }
                else
                {
                    this.whereBuilder.Append(string.Format(CultureInfo.InvariantCulture, " {0} {1} '{2}' ", methodCallExpression.Target, "like", methodCallExpression.Paramters[0].Value));
                }
            }

            if (methodCallExpression.Method.Name == "In")
            {
                string[] values   = methodCallExpression.Paramters[0].Value as string[];
                string   inValues = string.Empty;
                foreach (var item in values)
                {
                    inValues += string.Format(CultureInfo.InvariantCulture, "'{0}',", item);
                }

                inValues = inValues.TrimEnd(new char[] { ',' });
                this.whereBuilder.Append(" AND ");
                if (this.IsNotUsed(methodCallExpression.Target.ToString()))
                {
                    this.whereBuilder.Append(" NOT ");
                }

                this.whereBuilder.Append(string.Format(CultureInfo.InvariantCulture, " {0} {1} ({2}) ", methodCallExpression.Target, "IN", inValues));
            }

            if (methodCallExpression.Method.Name == "Count")
            {
                this.countBuilder.Append(" COUNT(*) ");
            }

            return(methodCallExpression);
        }
Esempio n. 2
0
        public override LinqExtender.Ast.Expression VisitMethodCallExpression(LinqExtender.Ast.MethodCallExpression methodCallExpression)
        {
            if (methodCallExpression.IsTake)
            {
                endBuilder.Append(string.Format(" maxResults {0} ", methodCallExpression.Paramters[0].Value));
            }

            if (methodCallExpression.IsSkip)
            {
                endBuilder.Append(string.Format(" startPosition {0} ", methodCallExpression.Paramters[0].Value));
            }

            if (methodCallExpression.Method.Name == "StartsWith" || methodCallExpression.Method.Name == "EndsWith" || methodCallExpression.Method.Name == "Contains")
            {
                this.whereBuilder.Append(" AND ");
                if (this.IsNotUsed(methodCallExpression.Target.ToString()))
                {
                    this.whereBuilder.Append(" NOT ");
                }

                whereBuilder.Append(string.Format(" {0} {1} '{2}' ", methodCallExpression.Target, "LIKE", methodCallExpression.Paramters[0].Value));
            }

            if (methodCallExpression.Method.Name == "In")
            {
                string[] values   = methodCallExpression.Paramters[0].Value as string[];
                string   inValues = string.Empty;
                foreach (var item in values)
                {
                    inValues += string.Format("'{0}',", item);
                }

                inValues = inValues.TrimEnd(new char[] { ',' });
                this.whereBuilder.Append(" AND ");
                if (this.IsNotUsed(methodCallExpression.Target.ToString()))
                {
                    this.whereBuilder.Append(" NOT ");
                }

                whereBuilder.Append(string.Format(" {0} {1} ({2}) ", methodCallExpression.Target, "IN", inValues));
            }

            if (methodCallExpression.Method.Name == "Count")
            {
                countBuilder.Append(" COUNT(*) ");
            }

            return(methodCallExpression);
        }
Esempio n. 3
0
 public virtual LinqExtender.Ast.Expression VisitMethodCallExpression(
     LinqExtender.Ast.MethodCallExpression methodCallExpression)
 {
     return(methodCallExpression);
 }