public override void VisitResultOperator(ResultOperatorBase resultOperator, QueryModel queryModel, int index)
        {
            // Remotion.Linq.Clauses.ResultOperators.AggregateFromSeedResultOperator
            // Remotion.Linq.Clauses.ResultOperators.AggregateResultOperator
            // Remotion.Linq.Clauses.ResultOperators.AllResultOperator
            // Remotion.Linq.Clauses.ResultOperators.AnyResultOperator
            // Remotion.Linq.Clauses.ResultOperators.AverageResultOperator
            // Remotion.Linq.Clauses.ResultOperators.CastResultOperator
            // Remotion.Linq.Clauses.ResultOperators.ChoiceResultOperatorBase
            // Remotion.Linq.Clauses.ResultOperators.ContainsResultOperator
            // Remotion.Linq.Clauses.ResultOperators.CountResultOperator
            // Remotion.Linq.Clauses.ResultOperators.DefaultIfEmptyResultOperator
            // Remotion.Linq.Clauses.ResultOperators.DistinctResultOperator
            // Remotion.Linq.Clauses.ResultOperators.ExceptResultOperator
            // Remotion.Linq.Clauses.ResultOperators.FirstResultOperator
            // Remotion.Linq.Clauses.ResultOperators.GroupResultOperator
            // Remotion.Linq.Clauses.ResultOperators.IntersectResultOperator
            // Remotion.Linq.Clauses.ResultOperators.LastResultOperator
            // Remotion.Linq.Clauses.ResultOperators.LongCountResultOperator
            // Remotion.Linq.Clauses.ResultOperators.MaxResultOperator
            // Remotion.Linq.Clauses.ResultOperators.MinResultOperator
            // Remotion.Linq.Clauses.ResultOperators.OfTypeResultOperator
            // Remotion.Linq.Clauses.ResultOperators.ReverseResultOperator
            // Remotion.Linq.Clauses.ResultOperators.SequenceFromSequenceResultOperatorBase
            // Remotion.Linq.Clauses.ResultOperators.SequenceTypePreservingResultOperatorBase
            // Remotion.Linq.Clauses.ResultOperators.SingleResultOperator
            // Remotion.Linq.Clauses.ResultOperators.SkipResultOperator
            // Remotion.Linq.Clauses.ResultOperators.SumResultOperator
            // Remotion.Linq.Clauses.ResultOperators.TakeResultOperator
            // Remotion.Linq.Clauses.ResultOperators.UnionResultOperator
            // Remotion.Linq.Clauses.ResultOperators.ValueFromSequenceResultOperatorBase

            if (resultOperator is CountResultOperator)
            {
                _query.CountPredicate = ODataQueryPart.Count();
            }
            else if (resultOperator is LongCountResultOperator)
            {
                _query.CountPredicate = ODataQueryPart.Count();
            }
            else if (resultOperator is SkipResultOperator)
            {
                var skipOperator = (SkipResultOperator)resultOperator;

                var skipCount = skipOperator.GetConstantCount();

                _query.SkipPredicate = ODataQueryPart.Skip(skipCount);
            }
            else if (resultOperator is TakeResultOperator)
            {
                var takeOperator = (TakeResultOperator)resultOperator;

                var takeCount = takeOperator.GetConstantCount();

                _query.TopPredicate = ODataQueryPart.Top(takeCount);
            }

            base.VisitResultOperator(resultOperator, queryModel, index);
        }
示例#2
0
 protected override CountQueryPart Parse(string parameterValue)
 {
     return(ODataQueryPart.Count());
 }