private void CrearMeta(string rango, TablasRango tablas, ITengoFechaRadicacionDesdeHasta query) { var regionales = tablas.Declaracion.GroupBy(r => r.Id_Regional).Select(reg => new RegionalObjetivo { Nombre = tablas.SubTablas.Find(st => st.Id == reg.Key).Descripcion, Municipios = reg.GroupBy(mn => mn.Id_lugar_fuente).Select(municipio => new MunicipioObjectivo { Nombre = tablas.SubTablas.Find(st => st.Id == municipio.Key).Descripcion, Regional = tablas.SubTablas.Find(st => st.Id == reg.Key).Descripcion, AniosMesesRadicacion = municipio.GroupBy(per => per.Fecha_Radicacion.EnAnioMes()).Select(periodo => new AnioMesObjetivo { Nombre = periodo.Key, Municipio = tablas.SubTablas.Find(st => st.Id == municipio.Key).Descripcion, Regional = tablas.SubTablas.Find(st => st.Id == reg.Key).Descripcion, }).OrderBy(x => x.Nombre).ToList(), AniosMesesAtencion = municipio.Where(q => q.Fecha_Valoracion.HasValue) .GroupBy(per => per.Fecha_Valoracion.EnAnioMes()) .Select(periodo => new AnioMesObjetivo { Nombre = periodo.Key, Municipio = tablas.SubTablas.Find(st => st.Id == municipio.Key).Descripcion, Regional = tablas.SubTablas.Find(st => st.Id == reg.Key).Descripcion, }).OrderBy(x => x.Nombre).ToList() }).ToList() }).ToList(); var municipios = new List <string>(); regionales.ForEach(reg => { municipios.AddRange(reg.Municipios.GroupBy(g => g.Nombre).Select(q => q.Key)); }); var ri = new Rango { Regionales = regionales, Municipios = municipios, Nombre = rango, Periodo = transformoFechas.ConvertirRangoEnPeriodo(rango), AnioMes = transformoFechas.ConvertirRangoEnAnioMes(rango), FechaRadicacionDesde = query.FechaRadicacionDesde, FechaRadicacionHasta = query.FechaRadicacionHasta }; var rangos = ConsultarRango(); RemoverRangoDeLaLista(rango, rangos); rangos.Add(ri); GuardarRangos(rangos); }