internal Structs.ResultWeaponsClass[] GetResultWeaponClassesWithResults() { string select = "SELECT DISTINCT weapons.class " + "FROM (weapons RIGHT JOIN Competitors ON weapons.WeaponId = Competitors.WeaponId) " + "INNER JOIN CompetitorResults ON Competitors.CompetitorId = CompetitorResults.CompetitorId;"; System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand( select, myInterface.databaseClass.Conn); if (myInterface.databaseClass.Conn.State != ConnectionState.Open) { myInterface.databaseClass.Conn.Open(); } System.Data.OleDb.OleDbDataReader r = cmd.ExecuteReader(); List <Structs.WeaponClass> wclasses = new List <Structs.WeaponClass>(); while (r.Read()) { wclasses.Add((Structs.WeaponClass)r.GetInt32(0)); } r.Dispose(); cmd.Dispose(); List <Structs.ResultWeaponsClass> rwclasses = new List <Structs.ResultWeaponsClass>(); foreach (Structs.WeaponClass wclass in wclasses) { // Check for duplicates Structs.ResultWeaponsClass rwc = CConvert.ConvertWeaponsClassToResultClass( wclass, myInterface.CompetitionCurrent.Type); if (!rwclasses.Contains(rwc)) { rwclasses.Add(rwc); } } // Sort rwclasses.Sort(); return(rwclasses.ToArray()); }