protected internal override Expression VisitOrderBy(OrderByLinqExpression node) { var reducedSource = Visit(node.Source); Visit(node.KeySelector); SortDirection = node.SortDirection; return(node.Reduce(reducedSource)); }
protected internal override Expression VisitOrderBy(OrderByLinqExpression node) { //Replace OrderBy1 -> OrderBy2 with a new instance of OrderBy2 return(MergeLambda( node, n => n.KeySelector, (i, o) => o.Body, (s, l) => new OrderByLinqExpression(node.Method, s, l, node.Comparer, node.SortDirection) )); }
protected internal override Expression VisitOrderBy(OrderByLinqExpression node) { var source = Visit(node.Source); if (source != node.Source) { return(new OrderByLinqExpression(node.Method, source, node.KeySelector, node.Comparer, node.SortDirection)); } return(node); }
/// <summary> /// Visits the children of a <see cref="OrderByLinqExpression"/>. /// </summary> /// <param name="node">The expression to visit.</param> /// <returns>If any children were modified, a new <see cref="OrderByLinqExpression"/>. Otherwise, the original expression.</returns> protected internal virtual Expression VisitOrderBy(OrderByLinqExpression node) { var source = Visit(node.Source); var keySelector = (LambdaExpression)Visit(node.KeySelector); var comparer = Visit(node.Comparer); if (source != node.Source || keySelector != node.KeySelector || comparer != node.Comparer) { return(new OrderByLinqExpression(node.Method, source, keySelector, comparer, node.SortDirection)); } return(node); }