0

我有以下运行良好的代码。在代码的最后一部分,对于 I=0,我试图添加仅显示重复值的代码。我有几个做不同事情的列表框。我什至有一个列出唯一值但我无法弄清楚让 listbox8 只显示 dplicate 值。

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click

    If GoLstBox.Items.Count <> 20 Then
        MessageBox.Show("Exactly Twenty Numbers Must Be Entered")
    Else
        Dim goArray(GoLstBox.Items.Count - 1) As Object
        GoLstBox.Items.CopyTo(goArray, 0)

        Array.Sort(goArray)
        ListBox6.Items.AddRange(goArray)

        Array.Reverse(goArray)
        ListBox5.Items.AddRange(goArray)

        Dim distinctNums = goArray.Distinct()
        Array.Sort(goArray)
        For Each num In distinctNums
            ListBox7.Items.Add(num.ToString())

            'For i = 0 To goArray.Count - 2
            'If goArray(i) = goArray(i + 1) Then
            ' ListBox8.Items(i + 1) = DirectCast(ListBox4.Items(i + 1), String))
        Next
    End If
End Sub
4

1 回答 1

1

这是您在 C# 中想要的算法(据我所知,无论如何;您的代码/解释并不完全清楚):

var groupedNumbers = goArray.GroupBy( n => n );

foreach( var numGroup in groupedNumbers )
{
    var num = numGroup.Key.ToString();

    ListBox7.Items.Add( num );

    if( numGroup.Count() > 1 )
    {
        ListBox8.Items.Add( num );
    }
}

可能的 VB.Net 翻译(可能不是 100% 准确但足够接近):

    Dim groupedNumbers = goArray.GroupBy( Function( n ) n )

    For Each numGroup In groupedNumbers
        Dim num = numGroup.Key.ToString()

        ListBox7.Items.Add( num )

        If numGroup.Count() > 1 Then
            ListBox8.Items.Add( num )
        End If
    Next
于 2013-10-03T17:33:58.103 回答