我有以下代码,效果很好。在代码的最后部分,对于I = 0,我试图添加仅显示重复值的代码。我有几个做不同事情的列表框。我甚至有一个列出唯一值但我不知道如何让listbox8只显示重复值。
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
答案 0 :(得分: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