Пейджинговая структура 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;
}