public List <List <Tag> > generarParejas() { List <List <Tag> > lstTagsHijos = new List <List <Tag> >(); int numParejasAFormar = Canciones.Count / 2; Random random = new Random(); Double numAleatorio; Cancion Pareja1 = new Cancion("0"); Cancion Pareja2 = new Cancion("0"); for (int i = 0; i <= numParejasAFormar; i++) { do { numAleatorio = random.NextDouble() * 100; foreach (Cancion can in Canciones) { if (numAleatorio >= can.numMin && numAleatorio < can.numMax) { Pareja1 = can; } } numAleatorio = random.NextDouble() * 100; foreach (Cancion can in Canciones) { if (numAleatorio >= can.numMin && numAleatorio < can.numMax) { Pareja2 = can; } } } while (Pareja1.Id == Pareja2.Id); Pareja pareja = new Pareja(Pareja1, Pareja2); lstTagsHijos.AddRange(pareja.cruzaTags()); } return(lstTagsHijos); }
public Pareja(Cancion pareja1, Cancion pareja2) { this.pareja1 = pareja1; this.pareja2 = pareja2; }
public List <Cancion> getCanciones(int idCanc = -1, string idUsuario = "") { DataSet ds = new DataSet(); Cancion can = null; String idCancion; String nombre; String artista; List <Cancion> lstCanciones = new List <Cancion>(); List <Tag> lstTags = new List <Tag>(); string strQuery = "SELECT c.[idCancion], c.[nombreCancion], [artista] FROM [dbo].[Cancion] as c"; string strSeparador = " WHERE "; if (idUsuario != "") { strQuery += " join [dbo].[CancionesAsignadas] as ca on c.idCancion = ca.idCancion "; strQuery += " WHERE ca.idUsuario = @idUsuario "; strSeparador = " and "; } if (idCanc > 0) { strQuery += strSeparador + " c.idCancion = @id "; } using (SqlCommand sqlCommand = new SqlCommand(strQuery, sqlConnection)) { sqlCommand.Parameters.AddWithValue("@id", idCanc); sqlCommand.Parameters.AddWithValue("@idUsuario", idUsuario); using (SqlDataAdapter da = new SqlDataAdapter(sqlCommand)) { da.Fill(ds, "listaCancion"); } } foreach (DataRow dr in ds.Tables[0].Rows) { DataSet ds2 = new DataSet(); idCancion = dr["idCancion"].ToString(); nombre = dr["nombreCancion"].ToString(); artista = dr["artista"].ToString(); strQuery = "SELECT t.* FROM tagsAsignados as ta INNER JOIN Tag as t on t.idTag = ta.idTag WHERE idCancion = @id;"; using (SqlCommand sqlCommand = new SqlCommand(strQuery, sqlConnection)) { sqlCommand.Parameters.AddWithValue("@id", idCancion); using (SqlDataAdapter da = new SqlDataAdapter(sqlCommand)) { lstTags = new List <Tag>(); da.Fill(ds2, "listaCancionTags"); foreach (DataRow r in ds2.Tables[0].Rows) { Tag t = new Tag(int.Parse(r["idTag"].ToString()), r["nombre"].ToString(), int.Parse(r["aptitud"].ToString())); lstTags.Add(t); } } } lstCanciones.Add(new Cancion(idCancion, nombre, artista, lstTags)); } return(lstCanciones); }