private static string GetQuery(QueryExpressions expressions, Dictionary <string, object> queryParameters) { var queryBuilder = new StringBuilder("SELECT * FROM root r"); if (expressions.WhereExpressions?.Any() == true) { queryBuilder.Append(" WHERE "); queryBuilder.Append( QueryWhereClauseVisitor.Visit(expressions.WhereExpressions.First(), queryParameters)); foreach (var whereExpression in expressions.WhereExpressions.Skip(1)) { queryBuilder.Append(" AND ") .Append(QueryWhereClauseVisitor.Visit(whereExpression, queryParameters)); } } if (expressions.GroupByExpression != null) { queryBuilder.Append(" ORDER BY "); queryBuilder.Append( QueryOrderByClauseVisitor.Visit(expressions.GroupByExpression)); } return(queryBuilder.ToString()); }
public static void CorrectlyHandlesSingleProperty() { Expression <Func <Sale, decimal> > groupByFunc = x => x.Amount; string actual = QueryOrderByClauseVisitor.Visit(groupByFunc); Assert.Equal("r.amount", actual); }