Skip and Take in Entity Framework Core
19,197
Usually you need to Order By first before use Skip
and Take
methods. Try ordering by name like this way:
await dbContext.Set<Library>().Include(x => x.Books)
.OrderBy(x=>x.Name)
.Skip(5)
.Take(10)
.ToListAsync();
As far as I remember your query should be translated using OFFSET-FETCH
filter which requires an ORDER BY
clause to exist.
Author by
Yurii N.
Updated on June 18, 2022Comments
-
Yurii N. almost 2 years
I have simple POCO classes:
public class Library { [Key] public string LibraryId { get; set; } public string Name { get; set; } public List<Book> Books { get; set; } } public class Book { [Key] public string BookId { get; set; } public string Name { get; set; } public string Text { get; set; } }
And I have query, that returns libraries with already included books:
dbContext.Set<Library>.Include(x => x.Books);
I'm trying to skip 5 libraries and then take 10 of them:
await dbContext.Set<Library>.Include(x => x.Books).Skip(5).Take(10).ToListAsync();
The problem is, that when I'm trying to perform
Skip
andTake
methods on this query, it returns libraries without included list of books.How can I work with
Skip
andTake
, with saving previously included entities?