public void TestSkipAndTake() { string storeName = Guid.NewGuid().ToString(); var dataObjectStore = _dataObjectContext.CreateStore(storeName); var context = new MyEntityContext(dataObjectStore); var people= new Person[10]; for(int i = 0; i < 10; i++) { var person = new Person {Age = 40 - i, Name = "Person #" + i}; context.Persons.Add(person); people[i] = person; } context.SaveChanges(); dataObjectStore = _dataObjectContext.OpenStore(storeName); context = new MyEntityContext(dataObjectStore); // Take, skip and skip and take with no other query expression var top3 = context.Persons.Take(3).ToList(); Assert.AreEqual(3, top3.Count); foreach(var p in top3) { Assert.IsTrue(people.Any(x=>p.Id.Equals(x.Id))); } var after3 = context.Persons.Skip(3).ToList(); Assert.AreEqual(7, after3.Count); var nextPage = context.Persons.Skip(3).Take(3).ToList(); Assert.AreEqual(3, nextPage.Count); // Combined with a sort expression var top3ByAge = context.Persons.OrderByDescending(p => p.Age).Take(3).ToList(); Assert.AreEqual(3, top3ByAge.Count); foreach(var p in top3ByAge) Assert.IsTrue(p.Age >= 38); var allButThreeOldest = context.Persons.OrderByDescending(p => p.Age).Skip(3).ToList(); Assert.AreEqual(7, allButThreeOldest.Count); foreach(var p in allButThreeOldest) Assert.IsFalse(p.Age >= 38); var nextThreeOldest = context.Persons.OrderByDescending(p => p.Age).Skip(3).Take(3).ToList(); Assert.AreEqual(3, nextThreeOldest.Count); foreach(var p in nextThreeOldest) Assert.IsTrue(p.Age < 38 && p.Age > 34); }