/// <summary>
        /// Clones the specified LST CharacterClassLevel.
        /// </summary>
        /// <param name="lstCharacterClassLevel">The LST CharacterClassLevel.</param>
        /// <returns>List<CharacterClassLevel></returns>
        static public List <CharacterClassLevel> Clone(List <CharacterClassLevel> lstCharacterClassLevel)
        {
            List <CharacterClassLevel> lstCCharacterClassLevel = new List <CharacterClassLevel>();

            foreach (CharacterClassLevel objCharacterClassLevel in lstCharacterClassLevel)
            {
                lstCCharacterClassLevel.Add(CharacterClassLevel.Clone(objCharacterClassLevel));
            }

            return(lstCCharacterClassLevel);
        }
        /// <summary>
        /// Determines whether [is character class level in list] [the specified object character class level].
        /// </summary>
        /// <param name="objCharacterClassLevel">The object character class level.</param>
        /// <param name="lstCharacterClassLevel">The LST character class level.</param>
        /// <returns>Boolean</returns>
        static public bool IsCharacterClassLevelInList(CharacterClassLevel objCharacterClassLevel, List <CharacterClassLevel> lstCharacterClassLevel)
        {
            bool blnCharacterClassLevelFound = false;

            foreach (CharacterClassLevel lstObjCharacterClassLevel in lstCharacterClassLevel)
            {
                if (objCharacterClassLevel.ClassID == lstObjCharacterClassLevel.ClassID)
                {
                    blnCharacterClassLevelFound = true;
                }
            }

            return(blnCharacterClassLevelFound);
        }
        /// <summary>
        /// Sets the reader to object.
        /// </summary>
        /// <param name="obCharacterClassLevel">The ob character class level.</param>
        /// <param name="result">The result.</param>
        private void SetReaderToObject(ref CharacterClassLevel obCharacterClassLevel, ref SqlDataReader result)
        {
            if (result.HasRows)
            {
                obCharacterClassLevel.CharacterID = (int)result.GetValue(result.GetOrdinal("CharacterID"));
                obCharacterClassLevel.ClassID     = (int)result.GetValue(result.GetOrdinal("ClassID"));
                obCharacterClassLevel.ClassLevel  = (int)result.GetValue(result.GetOrdinal("ClassLevel"));

                Class objClass = new Class();
                obCharacterClassLevel.objCharacterClass = objClass.GetClass(obCharacterClassLevel.ClassID);

                ClassLevelInfo objClassLevel = new ClassLevelInfo();
                obCharacterClassLevel.objCharacterClassLevelInfo = objClassLevel.GetClassLevels("ClassID=" + obCharacterClassLevel.ClassID.ToString() + " AND ClassLevel <=" + obCharacterClassLevel.ClassLevel.ToString(), "");
            }
        }
        /// <summary>
        /// Clones the specified object CharacterClassLevel.
        /// </summary>
        /// <param name="objCharacterClassLevel">The object CharacterClassLevel.</param>
        /// <returns>CharacterClassLevel</returns>
        static public CharacterClassLevel Clone(CharacterClassLevel objCharacterClassLevel, bool blnFromDatabase = false)
        {
            //Get the data from the database(?) then match it with what is passed in, we want to clone what is passed in for Character Items, not List Items
            CharacterClassLevel objCCharacterClassLevel = new CharacterClassLevel();

            if (blnFromDatabase)
            {
                objCCharacterClassLevel.GetCharacterClassLevel(objCharacterClassLevel.CharacterID, objCharacterClassLevel.ClassLevel);
            }
            else
            {
                objCCharacterClassLevel.CharacterID = objCharacterClassLevel.CharacterID;
                objCCharacterClassLevel.ClassID     = objCharacterClassLevel.ClassID;
                objCCharacterClassLevel.ClassLevel  = objCharacterClassLevel.ClassLevel;
            }
            return(objCCharacterClassLevel);
        }
        /// <summary>
        /// Gets the character class level list.
        /// </summary>
        /// <param name="strSprocName">Name of the string sproc.</param>
        /// <param name="strWhere">The string where.</param>
        /// <param name="strOrderBy">The string order by.</param>
        /// <returns>List of CharacterClassLevel Objects</returns>
        private List <CharacterClassLevel> GetCharacterClassLevelList(string strSprocName, string strWhere, string strOrderBy)
        {
            List <CharacterClassLevel> characterClassLevels = new List <CharacterClassLevel>();

            SqlDataReader      result;
            DatabaseConnection dbconn     = new DatabaseConnection();
            SqlCommand         command    = new SqlCommand();
            SqlConnection      connection = new SqlConnection(dbconn.SQLSEVERConnString);

            try
            {
                connection.Open();
                command.Connection  = connection;
                command.CommandType = CommandType.StoredProcedure;
                command.CommandText = strSprocName;
                command.Parameters.Add(dbconn.GenerateParameterObj("@strWhere", SqlDbType.VarChar, strWhere, 1000));
                command.Parameters.Add(dbconn.GenerateParameterObj("@strOrderBy", SqlDbType.VarChar, strOrderBy, 1000));
                result = command.ExecuteReader();

                while (result.Read())
                {
                    CharacterClassLevel objCharacterClassLevel = new CharacterClassLevel();
                    SetReaderToObject(ref objCharacterClassLevel, ref result);
                    characterClassLevels.Add(objCharacterClassLevel);
                }
            }
            catch
            {
                Exception e = new Exception();
                throw e;
            }
            finally
            {
                command.Dispose();
                connection.Close();
            }
            return(characterClassLevels);
        }