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); }
protected override SkipQueryPart Parse(string parameterValue) { int count; if (Int32.TryParse(parameterValue, out count) == false) { throw new ArgumentException(String.Format("Cannot skip '{0}' number of items. '{0}' is not an integar.", parameterValue)); } return(ODataQueryPart.Skip(count)); }
public void Translate_SkipThree_ReturnsLastThreeResult() { var query = new ODataQuery { SkipPredicate = ODataQueryPart.Skip(3) }; var expression = _translator.Translate <TestModel>(query); var fn = (Func <IQueryable <TestModel>, IQueryable <TestModel> >)expression.Compile(); var result = fn(_source).ToList(); Assert.That(result.Count, Is.EqualTo(3)); Assert.That(result[0].TestInt, Is.EqualTo(6)); Assert.That(result[1].TestInt, Is.EqualTo(7)); Assert.That(result[2].TestInt, Is.EqualTo(8)); }