internal LinqExtender.Ast.Expression Visit(LinqExtender.Ast.Expression expression) { switch (expression.CodeType) { case CodeType.BlockExpression: return(VisitBlockExpression((LinqExtender.Ast.BlockExpression)expression)); case CodeType.TypeExpression: return(VisitTypeExpression((LinqExtender.Ast.TypeExpression)expression)); case CodeType.LambdaExpresion: return(VisitLambdaExpression((LinqExtender.Ast.LambdaExpression)expression)); case CodeType.LogicalExpression: return(VisitLogicalExpression((LinqExtender.Ast.LogicalExpression)expression)); case CodeType.BinaryExpression: return(VisitBinaryExpression((LinqExtender.Ast.BinaryExpression)expression)); case CodeType.LiteralExpression: return(VisitLiteralExpression((LinqExtender.Ast.LiteralExpression)expression)); case CodeType.MemberExpression: return(VisitMemberExpression((LinqExtender.Ast.MemberExpression)expression)); case CodeType.OrderbyExpression: return(VisitOrderbyExpression((LinqExtender.Ast.OrderbyExpression)expression)); case CodeType.MethodCallExpression: return(VisitMethodCallExpression((LinqExtender.Ast.MethodCallExpression)expression)); } throw new ArgumentException("Expression type is not supported"); }
public IEnumerable <T> Execute(LinqExtender.Ast.Expression expression, bool isToIdsQueryMethod, out string idsQuery) { notExpressions = (expression as LinqExtender.Ast.BlockExpression).Expressions.Where(e => e.CodeType == CodeType.NotExpression); this.Visit(expression); if (!string.IsNullOrWhiteSpace(this.selectBuilder.ToString())) { builder.Append(this.selectBuilder.ToString().TrimEnd(new char[] { ',' })); } else { builder.Append("* "); } string count = this.countBuilder.ToString(); if (!string.IsNullOrWhiteSpace(count)) { string newValue = this.builder.ToString().Replace(" * ", count); builder.Clear(); builder.Append(newValue); } builder.Append(fromBuilder); if (!string.IsNullOrWhiteSpace(this.whereBuilder.ToString())) { string whereString = this.whereBuilder.ToString(); if (whereString.StartsWith(" AND")) { whereString = whereString.TrimStart(new char[] { ' ', 'A', 'N', 'D' }); } builder.Append(" WHERE " + whereString); } if (!string.IsNullOrWhiteSpace(this.orderByBuilder.ToString())) { builder.Append(" ORDER BY " + this.orderByBuilder.ToString().TrimStart(new char[] { ',' })); } if (!string.IsNullOrWhiteSpace(this.endBuilder.ToString())) { builder.Append(this.endBuilder); } idsQuery = builder.ToString().Trim(); return(new List <T>().AsEnumerable()); }
public IEnumerable <T> Execute(LinqExtender.Ast.Expression exprssion) { throw new NotImplementedException(); }
public IEnumerable <T> Execute(LinqExtender.Ast.Expression expression) { this.Visit(expression); return(new List <T>().AsEnumerable()); }
public IEnumerable <T> Execute(LinqExtender.Ast.Expression expression, bool isToIdsQueryMethod, out string idsQuery) { this.queryBuilder.Clear(); this.countBuilder.Clear(); this.selectBuilder.Clear(); this.orderByBuilder.Clear(); this.whereBuilder.Clear(); this.fromBuilder.Clear(); this.pageBuilder.Clear(); this.notExpressions = (expression as LinqExtender.Ast.BlockExpression).Expressions.Where(e => e.CodeType == CodeType.NotExpression); this.Visit(expression); if (!string.IsNullOrWhiteSpace(this.selectBuilder.ToString())) { this.queryBuilder.Append(this.selectBuilder.ToString().TrimEnd(new char[] { ',' })); } else { this.queryBuilder.Append("*"); } string count = this.countBuilder.ToString(); if (!string.IsNullOrWhiteSpace(count)) { var queryValue = this.queryBuilder.ToString(); var pattern = @"(?<=^|\s)\*(?=\s|$)"; //find asterisk as whole word queryValue = System.Text.RegularExpressions.Regex.Replace(queryValue, pattern, count); this.queryBuilder.Clear(); this.queryBuilder.Append(queryValue); } this.queryBuilder.Append(this.fromBuilder); if (!string.IsNullOrWhiteSpace(this.whereBuilder.ToString())) { string whereString = this.whereBuilder.ToString(); if (whereString.StartsWith(" AND", StringComparison.OrdinalIgnoreCase)) { //whereString = whereString.TrimStart(new char[] { ' ', 'A', 'N', 'D' }); whereString = whereString.TrimStart().Remove(0, 3); } this.queryBuilder.Append(" WHERE " + whereString); } if (!string.IsNullOrWhiteSpace(this.orderByBuilder.ToString())) { this.queryBuilder.Append(" ORDER BY " + this.orderByBuilder.ToString().TrimStart(new char[] { ',' })); } if (!string.IsNullOrWhiteSpace(this.pageBuilder.ToString())) { this.queryBuilder.Append(this.pageBuilder); } string query = idsQuery = this.queryBuilder.ToString(); if (isToIdsQueryMethod) { return(new List <T>()); } return(this.ExecuteIdsQuery(query, this.operationType)); }