public List <CardAbility> GetAllUniqueAbilities() // Läser data från databasen... { var sql = @"SELECT * FROM CardAbilities INNER JOIN AbilityType ON AbilitieTypeId = AbilityType.Id"; using (SqlConnection connection = new SqlConnection(conString)) using (SqlCommand command = new SqlCommand(sql, connection)) { connection.Open(); SqlDataReader reader = command.ExecuteReader(); var list = new List <CardAbility>(); while (reader.Read()) { CardAbility p = new CardAbility { Value = reader.GetSqlInt32(2).Value, Type = (AbilityType)Enum.Parse(typeof(AbilityType), reader.GetSqlString(4).Value) }; list.Add(p); } return(list); } }
public List <Card> GetAllUniqueCards() // Läser data från databasen { var sql = @"SELECT * FROM Card INNER JOIN CardType ON CardTypeId = CardType.Id LEFT JOIN AbilityToCard On AbilityToCard.CardId = Card.Id LEFT JOIN CardAbilities ON CardAbilities.Id = AbilityToCard.CardAbility LEFT JOIN AbilityType ON AbilitieTypeId = AbilityType.Id"; using (SqlConnection connection = new SqlConnection(conString)) using (SqlCommand command = new SqlCommand(sql, connection)) { connection.Open(); SqlDataReader reader = command.ExecuteReader(); var list = new List <Card>(); while (reader.Read()) { if (!list.Any(x => x.Id == reader.GetSqlInt32(0).Value)) //Riktigt snygg lösning för att kolla om ett id finns i databasen, jag copy-pastear den hehe { Card c = new Card { Id = reader.GetSqlInt32(0).Value, Name = reader.GetSqlString(1).Value, Cost = reader.GetSqlInt32(2).Value, Type = (CardType)Enum.Parse(typeof(CardType), reader.GetSqlString(7).Value) }; if (!reader.IsDBNull(4) && !reader.IsDBNull(5)) //Snygg hantering av null så att inte programmet blir argt =) { c.Attack = reader.GetSqlInt32(4).Value; c.Health = reader.GetSqlInt32(5).Value; } list.Add(c); } if (!reader.IsDBNull(8)) { CardAbility cardAbility = new CardAbility { Type = (AbilityType)Enum.Parse(typeof(AbilityType), reader.GetSqlString(14).Value), Value = reader.GetSqlInt32(12).Value }; list[list.Count - 1].Abilities.Add(cardAbility); } } return(list); } }