Jump to content
Morphrowsky

Organizar os IPs de acordo com os valores

Recommended Posts

Morphrowsky

Olá, minha dúvida é a seguinte, já criei o sistema de listar ele e as vezes que repetiu mas eu gostaria agora

de fazer o seguinte

o "IP" que repetiu mais vezes ficar em primeiro lugar, o segundo em segundo

e assim em diante

Dim itemlist As New List(Of String)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim strReturn As New System.Text.StringBuilder
Dim lItems As New Dictionary(Of String, Integer)
Dim intCount As Integer = 0
Dim strCurrentItem As String = String.Empty
itemlist.Add(ip.Text)
'Loop through listbox grabbing items...
For Each nItem As String In itemlist
If Not (lItems.ContainsKey(nItem)) Then 'Add listbox item to dictionary if not in there...
'The current item we are looking at...
strCurrentItem = nItem
'Check how many occurances of this items there are in the referenced listbox...
For Each sItem As String In itemlist
If sItem.Equals(strCurrentItem) Then 'We have a match add to the count...
intCount += 1
End If
Next
'Finally add the item to the dictionary with the items count...
lItems.Add(nItem, intCount)
'Reset intCount for next item... and strCurrentItem
intCount = 0
strCurrentItem = String.Empty
End If
Next
'Add to the string builder...
For i As Integer = 0 To lItems.Count - 1
strReturn.AppendLine(lItems.Values(i).ToString & " | " & lItems.Keys(i).ToString)
Next
richtextbox1.Text = (strReturn.ToString)
End Sub

O Código está funcionando perfeitamente mas está saindo assim:

3 | 192.99.156.98

10 | 186.206.152.52

5 | 186.206.144.4

2 | 186.206.155.7

43 | 186.66.6.2

6 | 186.206.152.77

Ele está totalmente desorganizado e não estou conseguindo resolver gostaria que me ajudem. não sei, tipo um sort de array

eu quero mesmo é organizar esses ips e seus valores olhem... gostaria que ficasse assim(esses ips é apenas exemplo, os ips vem do strreturn.tostring)

43 | 186.66.6.2

10 | 186.206.152.52

6 | 186.206.152.77

5 | 186.206.144.4

3 | 192.99.156.98

2 | 186.206.155.7

"O que tem valor mais alto ficasse em primeiro que no caso esse valor é as repetições dele.".

43 | 186.66.6.2 << no caso é este oque está com mais valor

eu tambem gostaria que apagasse o valor dele e o separador 43 | e escrevesse apenas o IP em uma outra string que no caso seria (186.66.6.2) obrigado a atenção.

Share this post


Link to post
Share on other sites
He B TeMy

Mete as tags de código nisso, mal consigo ler sem um editor.

Que salsa de código vai praí, tás a ver 2 loops á mesma colecção dentro um do outro... com o objectivo de encontrar duplicados?

Já experimentas-te usar LINQ? http://stackoverflow.com/questions/7832602/list-array-duplicates-with-count

Se não queres mostrar a contagem dos IP's para quê adicionares nesta linha?

strReturn.AppendLine(lItems.Values(i).ToString & " | " & lItems.Keys(i).ToString)

Adiciona só os IP's por ordem de contagem e tá bom.

De onde tás a ir buscar os IP's já agora?

Edited by He B TeMy

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.