Paginação usando LINQ

linq-logoOlá 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

Anúncios

Coordenador de Internet da Universidade do Oeste Paulista (Unoeste) e professor universitário de disciplinas relacionadas ao desenvolvimento de sistemas para Web, gerenciamento de servidores, serviços e redes.

Marcado com: , , , , , , , , , , , ,
Publicado em ASP.NET, Entity Framework, LINQ

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Sorocaba e Região
Prestadora de serviços RIZZO GS - Sorocaba/SP

Serviços de limpeza, conservação, recepção, copa, portaria, vigia, zeladoria, jardim, elétrica, hidráulica, pintura, etc.

Contato: (15) 3357-4263 / (15) 3357-4502 - contato@rizzogs.com.br

Website: http://www.rizzogs.com.br

%d blogueiros gostam disto: