在多数组列表中,我想重命名重复的值
本文关键字:重命名 数组 列表 | 更新日期: 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++;
}
}
}