string S = "123,12345,14564789,123,456789,456789,454564645,";
            var result = string.Join(",", S.TrimEnd(',').Split(',').Distinct());
            Console.WriteLine(result);

解决方案 »

  1.   

    我的C#里面怎么没有Distinct()这个方法?
      

  2.   

    首先用判断if(s.LastIndexOf(",")==s.length-1){s = s.Substring(0,s.LastIndexOf(","));}来去掉最后一个逗号,
    然后split以逗号作为参数把该字符串切成数组。
    string[] array = s.Split(",");
    然后进行一个数组排序
    Array.Sort(array);
    再用循环把不重复的拿出
    List<String> list = new List<String>();
    for(int i=0;i<array.length;i++){
     if(list.Count==0||!array[i].equals(list[list.Count-1])){
       list.add(array[i]);
     }
    }
    最把list数据拿出来还原成string型public String strDistinct(Stirng str){
      if(str.LastIndexOf(",")==str.length-1){str = str.Substring(0,str.LastIndexOf(","));}
    string[] array = s.Split(",");
    Array.Sort(array);
    List<String> list = new List<String>();
    for(int i=0;i<array.length;i++){
     if(list.Count==0||!array[i].equals(list[list.Count-1])){
       list.add(array[i]);
     }
    }
    str="";
    for(int i=0;i<list.Count;i++){
      if(i!=0){str+=",";}
       str+=list[i];
    }
    return str;
    }
      

  3.   

    3.5也有的,要引用下命名空间
    using System.Linq;不过版主写的String.Join 方法参数要4.0以上才能使用3.5的要ToArray一下
    var result = string.Join(",", S.TrimEnd(',').Split(',').Distinct().ToArray());
      

  4.   

    你可以同时把中间多余的逗号和空白也过滤掉,例如:string S = "123,12345,14564789,,,123,456789,    ,456789,454564645,";
    var query = (from x in S.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                where x.Trim() != string.Empty
                select x).Distinct();
    var result = string.Join(",", query.ToArray());