protected void btnPesquisar_Click(object sender, EventArgs e) { // Perfis selecionados var perfisSelecionados = ucMultiplosPerfil.RecuperarIdsSelecionados <int>(); // Niveis Ocupacionais selecionados var niveisOcupacionaisSelecionados = ucMultiplosNivelOcupacional.RecuperarIdsSelecionados <int>(); // Ufs selecionados var ufsSelecionados = ucMultiplosUF.RecuperarIdsSelecionados <int>(); //Usuario Selecionado var usuario = ucLupaUsuario.SelectedUser; var queryUsuarios = new ManterUsuario().ObterTodos(); queryUsuarios = perfisSelecionados.Any() ? queryUsuarios.Where(x => x.ListaPerfil.Any(p => perfisSelecionados.Contains(p.Perfil.ID))) : queryUsuarios; queryUsuarios = niveisOcupacionaisSelecionados.Any() ? queryUsuarios.Where(x => niveisOcupacionaisSelecionados.Contains(x.NivelOcupacional.ID)) : queryUsuarios; queryUsuarios = ufsSelecionados.Any() ? queryUsuarios.Where(x => ufsSelecionados.Contains(x.UF.ID)) : queryUsuarios; queryUsuarios = usuario != null?queryUsuarios.Where(x => x.ID == usuario.ID) : queryUsuarios; if (queryUsuarios.Count() > 0) { var resultado = queryUsuarios.Select(x => new { ID = x.UF.ID, Sigla = x.UF.Sigla }) .Distinct() .ToList() .OrderBy(x => x.ID) .Select(x => new DTOUsuarioUF { IDUf = x.ID, Sigla = x.Sigla, Usuario = usuario, PerfisID = perfisSelecionados.ToList(), NivelsOcupacionaisID = niveisOcupacionaisSelecionados.ToList() }).ToList(); rptPerfilUf.DataSource = resultado; rptPerfilUf.DataBind(); var relatorio = queryUsuarios.ToList().Select(x => new DTORelatorioDadosPessoais { UF = x.UF.Sigla, Nome = x.Nome, CPF = x.CPF, Email = x.Email, NivelOcupacional = x.NivelOcupacional.Nome, Perfil = String.Join("\n\r", x.ListaPerfil.Select(y => y.Perfil.Nome)) }).ToList(); Session.Add("dsRelatorio", relatorio); litContador.Text = queryUsuarios.Count().ToString(); // Converter os resultados em dados totalizadores. var totalizadores = new List <DTOTotalizador>(); totalizadores.Add(TotalizadorUtil.GetTotalizador(queryUsuarios.AsEnumerable(), "Totalizador", "ID", enumTotalizacaoRelatorio.Contar, false)); UF.Visible = chkListaCamposVisiveis.Items.FindByValue("UF").Selected; Nome.Visible = chkListaCamposVisiveis.Items.FindByValue("Nome").Selected; CPF.Visible = chkListaCamposVisiveis.Items.FindByValue("CPF").Selected; Email.Visible = chkListaCamposVisiveis.Items.FindByValue("Email").Selected; NivelOcupacional.Visible = chkListaCamposVisiveis.Items.FindByValue("NivelOcupacional").Selected; Perfil.Visible = chkListaCamposVisiveis.Items.FindByValue("Perfil").Selected; dvContador.Visible = true; pnlPerfilUsuario.Visible = true; componenteGeracaoRelatorio.Visible = true; } else { pnlPerfilUsuario.Visible = false; componenteGeracaoRelatorio.Visible = false; WebFormHelper.ExibirMensagem(enumTipoMensagem.Alerta, "Nenhuma Informação Encontrada"); } }