Why pass zero to Take? Apparently, because the number is calculated, and not accepting zero instead of returning zero results requires applications to write special logic to ignore zero. Still, not that important.
using var context = new SomeDbContext(); context.Database.EnsureDeleted(); context.Database.EnsureCreated(); context.AddRange( new Order { Id = 1, Foo = 1 }, new Order { Id = 2, Foo = 1 }); context.SaveChanges(); var page = 0; var size = 0; var results = context.Set<Order>().OrderBy(o => o.Id).Skip(page).Take(size).ToList(); foreach (var result in results) { Console.WriteLine($"{result.Id} {result.Foo}"); } public class SomeDbContext : DbContext { protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder //.UseSqlite("DataSource = db.dat") .UseMongoDB("mongodb://localhost:27017", "SomeDb3") .LogTo(Console.WriteLine, LogLevel.Information); protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Order>(); } } public class Order { public int Id { get; set; } public int Foo { get; set; } }
Unhandled exception. System.ArgumentOutOfRangeException: Value is not greater than 0: 0. (Parameter 'limit') at MongoDB.Driver.Core.Misc.Ensure.IsGreaterThan[T](T value, T comparand, String paramName) at MongoDB.Driver.Core.Misc.Ensure.IsGreaterThanZero(Int64 value, String paramName) at MongoDB.Driver.Linq.Linq3Implementation.Ast.Stages.AstLimitStage..ctor(Int64 limit) at MongoDB.Driver.Linq.Linq3Implementation.Ast.Stages.AstStage.Limit(Int64 limit) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToPipelineTranslators.TakeMethodToPipelineTranslator.Translate(TranslationContext context, MethodCallExpression expression) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToPipelineTranslators.ExpressionToPipelineTranslator.Translate(TranslationContext context, Expression expression) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToPipelineTranslators.AsMethodToPipelineTranslator.Translate(TranslationContext context, MethodCallExpression expression) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToPipelineTranslators.ExpressionToPipelineTranslator.Translate(TranslationContext context, Expression expression) at MongoDB.Driver.Linq.Linq3Implementation.Translators.ExpressionToExecutableQueryTranslators.ExpressionToExecutableQueryTranslator.Translate[TDocument,TOutput](MongoQueryProvider`1 provider, Expression expression, ExpressionTranslationOptions translationOptions) at MongoDB.Driver.Linq.Linq3Implementation.MongoQuery`2.Execute() at MongoDB.Driver.Linq.Linq3Implementation.MongoQuery`2.GetEnumerator() at MongoDB.EntityFrameworkCore.Query.QueryingEnumerable`2.Enumerator.MoveNextHelper() at MongoDB.EntityFrameworkCore.Query.QueryingEnumerable`2.Enumerator.MoveNext() at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at Program.<Main>$(String[] args) in /Users/arthur.vickers/code/OnYourOwnNow/OnYourOwnNow/Program.cs:line 18