c# - 多个arraylist重复subjectname顺序显示

标签 c# asp.net .net vb.net visual-studio-2008

用 C# 回答也对我有帮助。

我尝试了这段代码,因为如果我在多个数组列表中有重复的字符串,它会像以前一样按顺序更新和显示。

maths
english
maths
hindi
english
science
Economics
scince

我需要这样的输出

maths_1
english_1
maths_2
hindi
science_1
Economics
scince_2

我试过这段代码,但输出不按顺序**

Dim subjectCounts As Dictionary(Of String, Integer) = New Dictionary(Of String, Integer)
            For Each subject As String In arraysub
                If subjectCounts.ContainsKey(subject) Then
                    subjectCounts(subject) = (subjectCounts(subject) + 1)
                Else
                    subjectCounts.Add(subject, 1)
                End If
            Next
            Dim output As List(Of String) = New List(Of String)

            For Each pair As KeyValuePair(Of String, Integer) In subjectCounts
                If (pair.Value > 1) Then
                    Dim i As Integer = 1
                    Do While (i <= pair.Value)
                        output.Add((i.ToString + ("_" + pair.Key)))

                        i = (i + 1)
                    Loop
                Else
                    output.Add(pair.Key)
                End If
            Next

最佳答案

我想这会生成你想要的输出

首先让我们检查主题是否需要以“_#”结尾

现在我们遍历主题,并添加 _# 结尾 每个发生不止一次的人。 订单将与输入相同,因为我们运行了它。 计数将即时生成,因此这将是正确的。

    Dim hasMultiple As New Dictionary(Of String, Boolean)
    For Each subject As String In arraysub
        If hasMultiple.ContainsKey(subject) Then
            hasMultiple(subject) =  True
        Else
            hasMultiple.Add(subject, False)
        End If
    Next

    Dim output As New List(Of String)
    Dim subCount As New Dictionary(Of String, Integer) 
    For Each subject As String In arraysub
        If Not subCount.ContainsKey(subject) Then
            subCount.Add(subject, 0)
        End If
        subCount(subject) += 1
        If hasMultiple(subject) Then
            output.Add(subject & "_" & subCount(subject))
        Else
            output.Add(subject)
        End If
    Next

关于c# - 多个arraylist重复subjectname顺序显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18051571/

相关文章:

c# - 在计算字段中使用先前属性的 Linq 选择查询

c# - 无法使用 MRTK v2.0.0-RC1 进行构建

c# - gridview 根据值更改文本颜色

.net - 什么是 csproj 文件中的 <MvcProjectUpgradeChecked> 元素

c# - Blazor依赖注入(inject)错误: An unhandled exception occurred while processing the request?

c# - LINQ To Entities Include + Where 方法

c# - 异步调用异步委托(delegate)?

c# - 将列表存储在所有用户都可以访问的内存中

asp.net - 如何从 aspx 页面引用母版页?

c# - LINQ - 获取某个属性位于该属性类型的其他结果集中的结果