public PlanMEDTO Get(string proyectoId, int indicadorId) { try { return((from p in _context.Proyecto join pme in _context.PlanMonitoreoEvaluacion on p equals pme.Proyecto join i in _context.Indicador on pme.Indicador equals i join fd in _context.FuenteDato on pme.FuenteDato equals fd into Fuente from PlanFuente in Fuente.DefaultIfEmpty() join fm in _context.FrecuenciaMedicion on pme.FrecuenciaMedicion equals fm into Frecuencia from PlanFrecuencia in Frecuencia.DefaultIfEmpty() join ni in _context.NivelImpacto on pme.NivelImpacto equals ni into Nivel from PlanNivel in Nivel.DefaultIfEmpty() where p.CodigoProyecto == proyectoId && i.CodigoIndicador == indicadorId select new PlanMEDTO() { ProyectoId = p.CodigoProyecto, IndicadorId = i.CodigoIndicador, NombreProyecto = p.NombreProyecto, NombreIndicador = i.NombreIndicador, LineaBase = pme.ValorLineaBase, Metodologia = pme.MetodologiaRecoleccion, FuenteDato = new MapDTO() { Id = PlanFuente == null ? 0 : PlanFuente.Id, Nombre = PlanFuente == null ? string.Empty : PlanFuente.NombreFuente }, FrecuenciaMedicion = new MapDTO() { Id = PlanFrecuencia == null ? 0 : PlanFrecuencia.Id, Nombre = PlanFrecuencia == null ? string.Empty : PlanFrecuencia.NombreFrecuencia }, NivelImpacto = new MapDTO() { Id = PlanNivel == null ? 0 : PlanNivel.Id, Nombre = PlanNivel == null ? string.Empty : PlanNivel.NombreNivelImpacto }, Desagregaciones = ( from pd in _context.PlanDesagregacion join d in _context.Desagregacion on pd.Desagregacion equals d where pd.PlanMonitoreoEvaluacionProyectoCodigoProyecto == p.CodigoProyecto && pd.PlanMonitoreoEvaluacionIndicadorId == i.CodigoIndicador select new MapDTO() { Id = d.Id, Nombre = d.TipoDesagregacion }).ToArray() }).Single()); } catch (Exception e) { Console.WriteLine(e); return(null); } }