Entity structure paging with extension method slow?

I have some problems with slow query in Entity Framework in C #. I created an extension method called "Page" to handle swap, but when I use it, the request becomes very slow. If I just do .Skip (page.Value * pageSize.Value) .Take (pageSize.Value) instead of using the page, the request becomes much faster. I assume that doing this with a page allows you to get all the contacts before the search call. Is there a way to prevent this, or am I doing something else wrong?

Query:

var contacts = db.Contacts
                        .Where(x => x.AccountID == accountID && x.Deleted == false)
                        .OrderByDescending(x => x.FirstName)
                        .ThenBy(x => x.LastName)
                        .ThenBy(x => x.CreatedDate)
                        .Page(page, pageSize);

return contacts.ToList();

Extension Method:

    public static IEnumerable<T> Page<T>(this IEnumerable<T> elements, int? page, int? pageSize)
    {
        if (page.HasValue && pageSize.HasValue)
            return elements.Skip(page.Value * pageSize.Value).Take(pageSize.Value);
        else
            return elements;
    }
+5
source share
1 answer

IQueryable, EF SQL- .

IEnumerable, Page Skip Take of IEnumerable. , ( ), , .

+9

All Articles