예제 #1
0
        protected override Expression VisitRowNumber(RowNumberExpression rowNumberExpression)
        {
            Check.NotNull(rowNumberExpression, nameof(rowNumberExpression));

            var canOptimize = _canOptimize;

            _canOptimize = false;
            var changed    = false;
            var partitions = new List <SqlExpression>();

            foreach (var partition in rowNumberExpression.Partitions)
            {
                var newPartition = (SqlExpression)Visit(partition);
                changed |= newPartition != partition;
                partitions.Add(newPartition);
            }

            var orderings = new List <OrderingExpression>();

            foreach (var ordering in rowNumberExpression.Orderings)
            {
                var newOrdering = (OrderingExpression)Visit(ordering);
                changed |= newOrdering != ordering;
                orderings.Add(newOrdering);
            }

            _canOptimize = canOptimize;

            return(rowNumberExpression.Update(partitions, orderings));
        }
예제 #2
0
        protected override Expression VisitRowNumber(RowNumberExpression rowNumberExpression)
        {
            Check.NotNull(rowNumberExpression, nameof(rowNumberExpression));

            var parentSearchCondition = _isSearchCondition;

            _isSearchCondition = false;
            var changed    = false;
            var partitions = new List <SqlExpression>();

            foreach (var partition in rowNumberExpression.Partitions)
            {
                var newPartition = (SqlExpression)Visit(partition);
                changed |= newPartition != partition;
                partitions.Add(newPartition);
            }

            var orderings = new List <OrderingExpression>();

            foreach (var ordering in rowNumberExpression.Orderings)
            {
                var newOrdering = (OrderingExpression)Visit(ordering);
                changed |= newOrdering != ordering;
                orderings.Add(newOrdering);
            }

            _isSearchCondition = parentSearchCondition;

            return(ApplyConversion(rowNumberExpression.Update(partitions, orderings), condition: false));
        }
 protected override Expression VisitRowNumber(RowNumberExpression rowNumberExpression)
 {
     return(rowNumberExpression?.Update(
                rowNumberExpression.Partitions.VisitAll(this),
                rowNumberExpression.Orderings.VisitAll(this)));
 }