Пейджинговая структура Entity Framework с методом расширения работает медленно?

У меня есть некоторые проблемы с медленным запросом в Entity Framework в C #. Я создал метод расширения, который называется Page, для обработки страниц, но когда я его использую, запрос становится очень медленным. Если я просто делаю .Skip (page.Value * pageSize.Value) .Take (pageSize.Value) вместо использования Page, запрос становится намного быстрее. Я предполагаю, что при использовании страницы выбираются все контакты перед поиском. Есть ли способ предотвратить это или я делаю что-то еще неправильно?

Запрос:

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();

Метод расширения:

    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;
    }

Ответы на вопрос(1)

Ваш ответ на вопрос