I got several properties that are almost exactly the same, I'm trying to merge them down to just one property, but I'm not doing it right. Here are the over-redundant properties

Code:
        public string[] GetShieldBucklerNamesList
        {
            get
            {
                string[] shields;
                ArrayList ShieldsToAdd = new ArrayList();
                foreach (KeyValuePair<string, Tuple<ShieldType, int, int>> shield in InvShields)
                {
                    if (shield.Value.First == ShieldType.Buckler)
                    {
                        string shieldName = shield.Key;
                        ShieldsToAdd.Add(shieldName);
                    }
                }
                shields = ShieldsToAdd.ToArray(typeof(string)) as string[];
                return shields;
            }
        }

        public string[] GetShieldHeaterNamesList
        {
            get
            {
                string[] shields;
                ArrayList ShieldsToAdd = new ArrayList();
                foreach (KeyValuePair<string, Tuple<ShieldType, int, int>> shield in InvShields)
                {
                    if (shield.Value.First == ShieldType.Heater)
                    {
                        string shieldName = shield.Key;
                        ShieldsToAdd.Add(shieldName);
                    }
                }
                shields = ShieldsToAdd.ToArray(typeof(string)) as string[];
                return shields;
            }
        }
        public string[] GetShieldKiteNamesList
        {
            get
            {
                string[] shields;
                ArrayList ShieldsToAdd = new ArrayList();
                foreach (KeyValuePair<string, Tuple<ShieldType, int, int>> shield in InvShields)
                {
                    if (shield.Value.First == ShieldType.Kite)
                    {
                        string shieldName = shield.Key;
                        ShieldsToAdd.Add(shieldName);
                    }
                }
                shields = ShieldsToAdd.ToArray(typeof(string)) as string[];
                return shields;
            }
        }
        public string[] GetShieldRoundNamesList
        {
            get
            {
                string[] shields;
                ArrayList ShieldsToAdd = new ArrayList();
                foreach (KeyValuePair<string, Tuple<ShieldType, int, int>> shield in InvShields)
                {
                    if (shield.Value.First == ShieldType.Round)
                    {
                        string shieldName = shield.Key;
                        ShieldsToAdd.Add(shieldName);
                    }
                }
                shields = ShieldsToAdd.ToArray(typeof(string)) as string[];
                return shields;
            }
        }
here is how I am trying to slim it down... but Im getting a ; expected error.. Am i missing something simple?? I can't see it

Code:
        public string[] GetShieldByTypeNamesList(ShieldType shieldType)
        {
            get
            {
                string[] shields;
                ArrayList ShieldsToAdd = new ArrayList();
                foreach (KeyValuePair<string, Tuple<ShieldType, int, int>> shield in InvShields)
                {
                    if (shield.Value.First == shieldType)
                    {
                        string shieldName = shield.Key;
                        ShieldsToAdd.Add(shieldName);
                    }
                }
                shields = ShieldsToAdd.ToArray(typeof(string)) as string[];
                return shields;
            }
        }