public static List <Suceso> GetHistorialSuceso(int planillaId, int deportePeriodoId, int competidorId) { List <Suceso> lsu = new List <Suceso>(); List <SqlParameter> lp = new List <SqlParameter>(); lp.Add(new SqlParameter("PlanillaId", planillaId)); lp.Add(new SqlParameter("DeportePeriodoId", deportePeriodoId)); lp.Add(new SqlParameter("CompetidorId", competidorId)); DBTransaction db = new DBTransaction(); DataTable dt = db.GetStoreProcedure("conj.pHistorialSuceso", lp); int FindIndice = -1; foreach (DataRow dr in dt.Rows) { Suceso sc = ConvertToSucesos(dr); sc.Competidor = Competidor.ConvertToCompetidor(dr); sc.Competidor.Equipo = Equipo.ConvertToEquipo(dr); sc.ParametrosSuceso = ParametrosSuceso.ConvertToParametroSuceso(dr); sc.SucesoPersonas = new List <SucesoPersona>(); if (sc.ParametrosSuceso.RegistraPersona >= 1 && !string.IsNullOrEmpty(dr["PlanillaPersonaId"].ToString())) { SucesoPersona scp = SucesoPersona.ConvertToSucesoPersona(dr); scp.PlanillaPersona = PlanillaPersona.ConvertPlanillaPersona(dr, true); FindIndice = lsu.FindIndex(delegate(Suceso s) { return(s.SucesoId == sc.SucesoId); }); if (FindIndice > 0) { lsu.ElementAt(FindIndice).SucesoPersonas.Add(scp); } else { sc.SucesoPersonas.Add(scp); FindIndice = -1; } } else { FindIndice = -1; } if (FindIndice < 0) { lsu.Add(sc); } } return(lsu); }