在多数组列表中,我想重命名重复的值

本文关键字:重命名 数组 列表 | 更新日期: 2023-09-27 18:26:17

我尝试过这个代码,因为如果我在多个arraylist中有重复的字符串,它会更新1_Maths,2_Maths

例如。在多重数组列表中,我有

数学

英语

数学

印地语

英语

所以我想要o/p:

1_数学

1_英语

2_数学印地语

2_英语

我的代码是这个生成数组列表

Dim col As Integer = 0
Dim dt As New DataTable
Dim ArraySubject(0, Grd.Columns.Count - 1) As String
For i As Integer = 0 To Grd.Columns.Count - 1
   If Grd.Columns(i).Visible = True Then
      ArraySubject(0, col) = GvSearch.HeaderRow.Cells(i).Text 
      col += 1
    End If
Next

c中的答案也会对我有所帮助。

在多数组列表中,我想重命名重复的值

我对VB.NET了解不多,所以我认为您需要C#中的内容:

string[] subjects = new string[] { "maths", "english", "maths", "hindi", "english" };
Dictionary<string, int> subjectCounts = new Dictionary<string, int> ();
foreach (string subject in subjects) {
    if (subjectCounts.ContainsKey(subject))
        subjectCounts[subject]++;
    else
        subjectCounts.Add(subject, 1);
}
List<string> output = new List<string>();
foreach (KeyValuePair<string, int> pair in subjectCounts) {
    if (pair.Value > 1) {
        for (int i = 1; i <= pair.Value; i++)
            output.Add(i + "_" + pair.Key);
    } else {
        output.Add(pair.Key);
    }
}
foreach (string subject in output)
    Console.WriteLine(subject);

该输出:

1_数学

2_数学

1_英语

2_英语

印地语

如果你想按数字排序,只需在输出之前对数组进行排序

output.Sort();

输出:

1_英语

1_数学

2_英语

2_数学

印地语

private List<string> list = new List<string>();
private List<string> rslt = new List<string>();            
list.Add("math");
list.Add("science");
list.Add("math");
list.Add("science");
foreach (string i in list)
{
     rslt.Add(i);
}
foreach (string i in list)
{
     if (list.Count<string>(f => f == i) > 1)
     {
          int cnt = 1;
          int idx = 0;
          foreach (string j in list)
          {
               if (j == i)
               {
                    rslt[idx] = cnt.ToString() + "_" + j;
                    cnt++;
               }
               idx++;
           }
      }
 }