none
list<string>去除重复性,不得使用remove的之类的方式。只能将重复的元素添加新字符串变成不重复的元素,如何较好地做到?

    问题

  • 有一个string类型的list如下

    电视机

    电视机

    火车

    电冰箱

    飞机

    电冰箱

    电视机

    我要去除这个集合的重复性并输出到set集合中,或者输出到类似set集合的对象中去。但是要求该list的count属性不变,也就是说不能使用remove之类的方式去除,要求只能将重复的元素添加新字符串变成不重复的元素,

    去除重复性的集合列表的效果如下

    电视机

    电视机1

    火车

    电冰箱

    飞机

    电冰箱1

    电视机2

    我知道有二个简单的办法,就是获取当前时间,精确到毫秒,然后格式化,另外一个使用guid。但是这两个方法生成的字符串太长。

    我想要类似windows文件夹的那种方式,"新建一个文件,如果已有该文件名,就在后缀加上一个1,如果还有就在后缀加上一个2……等"这样的方式或者有更好的方式。可以改变集合的顺序,但是count属性不能发生改变







    2017年1月19日 11:14

答案

  • 你好,

    可以先将重复的内容及个数查出来,在改名新增。请参考下面的代码:

    List<string> list = new List<string>() { "TV", "TV", "Train", "refrigerator", "Airplan", "refrigerator", "TV" };
    
                List<string> result = new List<string>();
    
                
    
                var dlist = from w in list
                                     group w by w into g
                                     where g.Count() > 1
                                     select new
                                     {
                                         Word = g.Key,
                                         Count = g.Count()
                                     };
    
                var ndlist = from w in list
                             group w by w into g
                             where g.Count() == 1
                             select g.Key;
    
    
                result.AddRange(ndlist);
               
    
                foreach (var item in dlist)
                {
                    result.Add(item.Word);
                    for (int i = 1; i < item.Count; i++)
                    {
                        result.Add(item.Word + i.ToString());
                    }
                }

    Best regards,

    Cole Wu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年1月20日 8:49
    版主