TextBox 有下面一些数据
13552501083
13552501083
13552501087
13552501087
13552501087
13552501084
13552501085
13552501084
13552501089
13552501086后台取得文本框数据时,我得到了一个数组。
我需要实现是:将该数组所有有重复的数据都取出来,并将这些重复的在文本框中去掉。
如上数据取出:
13552501083
13552501083
13552501087
13552501087
13552501087
13552501084
13552501084
而只剩不重复的数据:
13552501085
13552501089
13552501086

解决方案 »

  1.   

    想起了Linq里面的Distinct
    到网上去找一个Set的类型(就是数学里面的集合),拿来用就可以了
      

  2.   


    arraylist source;
    arraylist dest;if(source.Count>0)
    dest.append(source[0]);for(int i=1;i<source.Count;++i)

        if(!HasContain(dest, source[i]))
        {
            dest.append(source[i]);
        }       
    }bool HasContain(arraylist dest, string str)
    {
        foreach(string s in dest)
        {
            if(s == str)
               return true;
        }
        return false;
    }
      

  3.   

    一个Set类的实现:
    http://www.codeproject.com/KB/recipes/sets.aspx
      

  4.   

    前面没看清楚你的意图bool[] flag = new bool[arr.Count]
    for(int i=0;i<arr.Count-1;++i)

        for(int j=i;j<arr.Count;++j)
        if(arr[i] == arr[j])
        {
            flag[i] = true;
            flag[j] = true;
        }       
    }arraylist dup; 
    arraylist nodup;
    for(int i=0;i<arr.Count;++i)
    {
        if(flag[i])
            nodup.append(arr[i]);
        else
            dup.append(arr[i]);      
    }
      

  5.   

    个人习惯使用hashTable...
    using System.Collections;            string[] sourceStringArray = new string[] { "1", "2", "3", "1", "2", "3", "4", "5" };
                Hashtable destHT = new Hashtable();
                for (int i = 0; i < sourceStringArray.Length; i++)
                {
                    object o = sourceStringArray.GetValue(i);
                    if (destHT.ContainsKey(o))
                        continue;
                    else
                        destHT.Add(o, o);
                }如果需要得到里面的值,直接 foreach(object o in destHT)
    如果得到某一个值,可以 destHT[key].tostring