检查列表中的唯一值,然后递增重复项c#Linq

use*_*707 0 c# linq group-by

我有一种情况,我想枚举一个字符串列表,然后检查重复项,如果有任何重复项,最后增加数字.字符串的顺序无关紧要.

例如,如果我的列表是:

  • 测试
  • 测试仪
  • 测试仪
  • 测试仪

它将改为

  • 测试
  • 测试仪
  • 测试仪(1)
  • 测试仪(2)

是否有捷径可寻?我目前的想法是做一个分组,然后找到每个组的计数,然后递归地遍历每个组并更改值 - 但确定有一个更快的方法来使用LINQ做到这一点

Tim*_*ter 7

您可以使用该Select项目的重载索引:

List<string> resultList = list
    .GroupBy(s => s)
    .SelectMany(g => g
      .Select((s, index) => $"{s}{(index == 0 ? "" : $" ({index})")}"))
    .ToList();
Run Code Online (Sandbox Code Playgroud)