添加引用:using System.Data;和using System.Collections.Generic;

//……………………以下是自定义方法………………………………

   Hashtable HsMakeOut = new Hashtable();//初始哈希表

   /// <summary>

   /// 数组去掉重复项

   /// </summary>

   /// <param name="AddHsName">便于重新命名更好的定义哈希表的值</param>

   /// <param name="dnames">以','隔开的字符串(相当于数组)</param>

   /// <returns>去掉重复项的字符串,以','隔开(相当于数组)</returns>

   public string ArrayList(string AddHsName, string dnames)

   {

       List<string> ezone = new List<string>();//链表,便于检查重复项的操作

       string ClearDitto = "";//新字符串(即新数组)

       string[] ErrList = dnames.Split(',');//变字符串为数组


       for (int i = 0; i < ErrList.Length; i++)//遍历数组,这里可以用foreach(string i in ErrList)

       {

           if (!ezone.Contains(ErrList[i]))//判断链表中是否存在该ErrList[i]字符串

           {

               HsMakeOut[AddHsName + ErrList[i].ToString()] = 1;//出现一次的

               ezone.Add(ErrList[i]);//插入链表中,上面if语句已经判断了ErrList[i]字符串

               if (ClearDitto == "") ClearDitto = ErrList[i].ToString();

               else ClearDitto += "," + ErrList[i].ToString();//这两句确保了ClearDitto字符串的格式是以','隔开

           }

           else HsMakeOut[AddHsName + ErrList[i].ToString()] = int.Parse(HsMakeOut[AddHsName + ErrList[i].ToString()].ToString()) + 1;//出现多次的

       }

       return ClearDitto;//返回已经去掉重复项的字符串,或者返回数组也行(return ErrList;//不过开头的string要改为string[])

   }

//下面要使用出现次数的,可以直接用 HsMakeOut [“ AddHsName”+“名称”](文字可能表述不清楚,看不懂可以私聊)

//…………………如需只要去掉重复项并返回数组,可看………………………

   /// <summary>

   /// 数组去掉重复项

   /// </summary>

   /// <param name="ErrList">原数组</param>

   /// <returns>去掉重复项的数组</returns>

   public string[] ArrayList(string[] ErrList)

   {

       List<string> ezone = new List<string>();


       for (int i = 0; i < ErrList.Length; i++)

       {

           if (!ezone.Contains(ErrList[i]))

           {

               ezone.Add(ErrList[i]);

           }

       }

       return ezone.ToArray();

   }