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); }
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); }
public virtual LinqExtender.Ast.Expression VisitMethodCallExpression( LinqExtender.Ast.MethodCallExpression methodCallExpression) { return(methodCallExpression); }