public List<ProyectoInversion> BuscarXFiltroConCronograma(String pStrCodSNIP, String pStrNombre, String pStrUbicacion, String pStrIdEstado) { List<ProyectoInversion> lstProyectos = new List<ProyectoInversion>(); ProyectoInversion_DAL objProyectoInversion_DAL = new ProyectoInversion_DAL(); try { if (String.IsNullOrWhiteSpace(pStrNombre)) { pStrNombre = ""; } if (String.IsNullOrWhiteSpace(pStrUbicacion)) { pStrUbicacion = ""; } if (String.IsNullOrWhiteSpace(pStrIdEstado)) { pStrIdEstado = "0"; } //var lstProyectosTmp = (from pi in objContext.OP_PROYECTO_INVERSION_PUBLICA // join via in objContextIntegrado.MA_VIA on pi.coVia equals via.coVia // join exp in objContext.OP_EXPEDIENTE_TECNICO on pi.coProyecto equals exp.coProyecto // join cro in objContext.OP_CRONOGRAMA_EJECUCION on exp.coExpediente equals cro.coExpediente // where ((via.noTipoVia + " " + via.noNomVia + " " + pi.txUbicacion).ToLower().Contains(pStrUbicacion.ToLower()) || pStrUbicacion == "") // && (pi.noNombre.ToLower().Contains(pStrNombre.ToLower()) || pStrNombre == "") // && (pi.noEstado == pStrIdEstado || pStrIdEstado == "0") // select new { pi, via, exp, cro }).OrderBy(x=>x.exp.coExpediente).ThenBy(x=> x.cro.feEmision); ObrasPublicasEntities objContext = new ObrasPublicasEntities(); var objResult = objContext.sp_gop_get_proy_con_cro(pStrNombre, pStrCodSNIP, pStrUbicacion, pStrIdEstado).ToList(); List<sp_gop_get_proy_con_cro_Result> lstProyectosTmp = objResult; foreach (var objProyTmp in lstProyectosTmp) { ProyectoInversion objProyecto = new ProyectoInversion(); objProyecto.CodSNIP = objProyTmp.coSNIP; objProyecto.Nombre = objProyTmp.noNombre; objProyecto.IdProyecto = objProyTmp.coProyecto; objProyecto.Ubicacion = objProyTmp.txUbicacion; objProyecto.NomVia = objProyTmp.noNomVia; objProyecto.TipoVia = objProyTmp.noTipoVia; objProyecto.IdEstado = objProyTmp.noEstado; objProyecto.NomEstado = ObtieneEstados(null).Where(e => e.Id == objProyTmp.noEstado).First().Nombre; objProyecto.IdExpediente = objProyTmp.coExpediente; objProyecto.IdCronograma = objProyTmp.coCronograma; if (objProyTmp.feEmision.HasValue) { objProyecto.FechaEmisionCrono = objProyTmp.feEmision.Value; } if (objProyTmp.nuPlazoEjecucion.HasValue) { objProyecto.PlazoEjecucionCrono = objProyTmp.nuPlazoEjecucion.Value; } lstProyectos.Add(objProyecto); } } catch (Exception ex) { throw new Exception(ex.ToString()); } return lstProyectos; }