Olá pessoal, tudo bom?
Por vezes nos deparamos com a necessidade de paginar o resultado de consultas para que o usuário possa ter melhor experiência de uso sobre o nosso software e, caso você esteja desenvolvendo utilizando LINQ, saiba que também temos uma forma muito simples de segmentar o retorno dos dados (consulta) através dos métodos Skip e Take, onde o primeiro “pula” uma certa quantidade de registros e o segundo “pega” a quantidade de registros especificados para ele. Vejamos o exemplo a seguir:
public List<AtividadeDTO> ObterListaAtividades(int codigoFuncionario, int numeroPagina, int registrosPorPagina) { int salto = 0; try { using (HelpDeskEntities contexto = new HelpDeskEntities(Util.ConnectionString)) { if (numeroPagina > 1) salto = (numeroPagina - 1) * registrosPorPagina; var dados = (from a in contexto.Atividade where a.CodigoFuncionario == codigoFuncionario orderby a.DataInicio descending select new AtividadeDTO { Codigo = a.Codigo, Descricao = a.Descricao, DataInicio = a.DataInicio, DataFim = a.DataFim, Status = a.Status.Descricao, Solicitante = a.Solicitante.Nome }).Skip(salto).Take(registrosPorPagina).ToList(); return dados; } } catch { return null; } }
No exemplo utilizei um contexto do Entity Framework para retornar os dados, mas isso poderia ser feito de quaisquer outras formas, pois o importante a ser notado é o uso das instruções Skip e Take ao final da consulta LINQ.
Grande abraço,
Eduardo Henrique Rizo
[twitter-follow screen_name=’eduardorizo’ show_count=’yes’]