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’]