首页 > 解决方案 > 将计数值附加到找到的重复字符串值

问题描述

所以我有一个字符串列表,假设它看起来像:

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" }

我需要的是能够在每次找到重复项时将 (2)、(3) 等附加到字符串中。但是我遇到的问题是,一旦我将一个数字附加到找到的第一个重复项上,那将不再是重复项,因此对字符串值进行 LINQ 搜索不会显示该值,并且计数将被丢弃. 例如,由于 (2),1 月成本报告 (2) 不会被视为 1 月成本报告的副本。

我想过使用正则表达式来做到这一点,但我不熟悉如何使用动态字符串,或者这是否可行。

标签: c#.net

解决方案


尝试这个:

    var dups = reportTitleList.GroupBy(_ => _);
    var list = new List<string>();

    foreach (var element in dups)
    {
        var items = element.Select((_,index) => _+$" ({index+1})" );
        list.AddRange(items);
    }

输出是:

一月成本报告 (1) 一月成本报告 (2) 一月成本报告 (3) 二月成本报告 (1) 三月成本报告 (1) 四月成本报告 (1) 四月成本报告 (2) 五月成本报告 (1)


推荐阅读