public ActionResult TabelaAluno(Filtro[] filtros) { var paginacao = StrToInt32(ConfigurationManager.AppSettings["PaginacaoPadrao"]); var paginaAtual = 1; var listaaluno = new AlunoDal().ObterTodos().ToList(); if (filtros != null) { var listaFiltrosValidos = filtros.ToList <Filtro>().Where(ent => !String.IsNullOrEmpty(ent.value)); foreach (var filtro in listaFiltrosValidos) { switch (filtro.name) { case "codigo": var id = Convert.ToInt32(filtro.value); listaaluno = listaaluno.Where(ent => ent.alunoid == id).ToList(); break; case "nome": listaaluno = listaaluno.Where(ent => ent.nome.Contains(filtro.value)).ToList(); break; case "cpf": var cpf = RemoveMascara(filtro.value); listaaluno = listaaluno.Where(ent => ent.cpf == cpf).ToList(); break; case "datanascimento": var datanascimento = Convert.ToDateTime(filtro.value + " 00:00:00"); listaaluno = listaaluno.Where(ent => ent.datanascimento.Value.Date == datanascimento.Date).ToList(); break; case "datacadastro": var datacadastro = Convert.ToDateTime(filtro.value + " 00:00:00"); listaaluno = listaaluno.Where(ent => ent.datacadastro.Value.Date == datacadastro.Date).ToList(); break; case "Paginacao": paginacao = StrToInt32(filtro.value); break; case "PaginaAtual": paginaAtual = StrToInt32(filtro.value); break; } } } int quantidade = listaaluno.Count(); var grid = new TabelaGenerica <Aluno> { Dados = listaaluno.OrderBy(ent => ent.nome) .ToList() .Skip(paginacao * (paginaAtual - 1)).Take(paginacao > quantidade ? quantidade : paginacao).ToList(), Paginacao = paginacao, PaginaAtual = paginaAtual, TotalRegistros = quantidade }; return(View(grid)); }