示例#1
0
        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());
        }