private void VerificarAreas() { var usuario = new ManterUsuario().ObterUsuarioPorID(IdUsuario); var subAreas = new ManterSubarea().ObterPorUsuario(usuario); if (subAreas.Any()) { // Converte só uma vez em DTO pra evitar consulta lazy a cada loop dos repeaters de áreas. var areasDto = subAreas.Select(x => x.Area).Distinct().Select(a => new DTOArea { id = a.ID, nome = a.Nome, subAreas = subAreas.Where(s => s.Area.ID == a.ID) .Select(s => new DTOSubarea { id = s.ID, nome = s.Nome }).ToList() }).OrderBy(x => x.id); rptAreas.DataSource = areasDto; rptAreas.DataBind(); divAreas.Visible = true; } }
public List <Subarea> ObterSubareasSelecionadas() { var dtoIdsSubAreasSelecionadas = new JavaScriptSerializer().Deserialize <List <DTOArea> >(txtJsonAreasSelecionadas.Value) .SelectMany(x => x.subAreas).Where(x => x.selecionada == true).Select(x => x.id).ToList(); var subAreas = new ManterSubarea().ObterTodos().Select(x => x.ID).ToList(); return((from id in dtoIdsSubAreasSelecionadas where subAreas.Contains(id) select new Subarea { ID = id }).ToList()); }