C# 在找到重复的字符串值时将其附加到该值
我有一个字符串列表,假设它看起来像:C# 在找到重复的字符串值时将其附加到该值,c#,.net,C#,.net,我有一个字符串列表,假设它看起来像: var reportTitleList = new List<string>(){ "January Cost Report", "January Cost Report", "January Cost Report", "February Cost Report", "March Cost Report", "April Cost Report", "April Cost Report", "May Cost Report" } var re
var reportTitleList = new List<string>(){ "January Cost Report", "January Cost Report", "January Cost Report", "February Cost Report", "March Cost Report", "April Cost Report", "April Cost Report", "May Cost Report" }
var reportTitleList=new List(){“一月成本报告”、“一月成本报告”、“一月成本报告”、“二月成本报告”、“三月成本报告”、“四月成本报告”、“四月成本报告”、“五月成本报告”}
我需要的是能够在每次发现重复项时将(2)、(3)等附加到字符串中。但我的问题是,一旦我在找到的第一个重复项中添加了一个数字,它就不再是重复项了,因此对字符串值执行LINQ搜索将不会显示该值,并且计数将被抛出。例如,由于(2)的原因,1月份成本报告(2)不会被视为1月份成本报告的副本
我曾想过使用正则表达式来实现这一点,但我不熟悉如何使用动态字符串来实现这些功能,或者这是否可行 试试这个:
var dups = reportTitleList.GroupBy(_ => _);
var list = new List<string>();
foreach (var element in dups)
{
var items = element.Select((_,index) => _+$" ({index+1})" );
list.AddRange(items);
}
var dups=reportTitleList.GroupBy(=>;
var list=新列表();
foreach(DUP中的var元素)
{
var items=element.Select((索引)=>({index+1})”;
列表。添加范围(项目);
}
输出为:
一月份成本报告(1)
一月成本报告(二)
一月份成本报告(3)
二月份成本报告(1)
三月成本报告(1)
四月成本报告(1)
四月成本报告(二)
May Cost Report(1)收集所有实例,然后使用Linq GroupBy扩展并附加计数。或者,使用一个字典,其中键是名称,值是实例数,然后使用Linq Select获取最终字符串。不确定这正是OP所要求的。他们不希望单独的报告标题带有计数,他们希望每个标题都有第一个副本、第二个副本等。因此字符串应该变成一月成本报告(1)、一月成本报告(2)等。我已经修改了我的答案