通过附加计数器使每个字符串唯一
本文关键字:字符串 唯一 计数器 | 更新日期: 2023-09-27 17:49:27
我有一个字符串列表,我想通过在列表末尾添加一个数字来使列表中的每个字符串唯一。此外,它不区分大小写,因此"apple"应假定为与"apple"或"apple"相同
例如:List<string> input = new List<string>();
input.Add("apple");
input.Add("ball");
input.Add("apple");
input.Add("Apple");
input.Add("car");
input.Add("ball");
input.Add("BALL");
预期输出:"苹果"、"球","2代"、"都"台苹果3代,"车"、"ball2"、"BALL3"
我需要帮助来开发产生输出的逻辑。谢谢你。
编辑:我不能有0和1,重复字符串必须以2,3,4…
var newList = input.GroupBy(x => x.ToUpper())
.SelectMany(g => g.Select((s, i) => i == 0 ? s : s + (i+1)))
.ToList();
var str = String.Join(", ", newList);
编辑
var newList = input.Select((s, i) => new { str = s, orginx = i })
.GroupBy(x => x.str.ToUpper())
.Select(g => g.Select((s, j) => new { s = j == 0 ? s.str : s.str + (j + 1), s.orginx }))
.SelectMany(x => x)
.OrderBy(x => x.orginx)
.Select(x => x.s)
.ToList();