Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在找到重复的字符串值时将其附加到该值_C#_.net - Fatal编程技术网

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)等。我已经修改了我的答案