private static void NeedsOrdering(OrderingFinder finder, MethodCallExpression node) { if (QueryableUtility.IsOrderingMethod(node)) { finder.NeedsOrderBy = false; finder.state = Finish; } }
private static void Start(OrderingFinder finder, MethodCallExpression node) { if (methods.Any(m => m.Equals(node.Method.Name))) { finder.NeedsOrderBy = true; finder.state = NeedsOrdering; } }
internal static bool NeedsOrderMethod(Expression expression) { OrderingFinder finder = new OrderingFinder { NeedsOrderBy = false }; finder.Visit(expression); return finder.NeedsOrderBy; }
internal static bool NeedsOrderMethod(Expression expression) { OrderingFinder finder = new OrderingFinder { NeedsOrderBy = false }; finder.Visit(expression); return(finder.NeedsOrderBy); }
public Expression Visit(IQueryable query) { if (OrderingFinder.NeedsOrderMethod(query.Expression)) { // Create Ordered at root and combine both queries. var orderedQuery = query.OrderBy(this.propertyAccessor.GetAccessor <T>()); return(QueryComposer.Compose(orderedQuery, query).Expression); } return(query.Expression); }