Tengo algunos problemas con una consulta lenta en Entity Framework en C#. Creé un método de extensión llamado Página para manejar la paginación, pero cuando lo uso, la consulta se vuelve realmente lenta. Si acabo de hacer .Skip (page.Value * pageSize.Value) .Take (pageSize.Value) en lugar de usar Page la consulta se vuelve mucho más rápida. Supongo que hacerlo con Page busca todos los contactos antes de la búsqueda. ¿Hay alguna manera de prevenir esto o estoy haciendo algo diferente?¿La paginación de la estructura de entidad con el método de extensión es lenta?
Consulta: método
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();
Extensión:
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;
}