ELIMINAR REPETIDOS DO LISTBOX

TRINDADI 03/08/2017 11:09:05
#475596
Bom dia pessoal.
Alguém poderia me ajudar! Eu preciso percorrer um Listbox e eliminar os números repetidos dele.
Ex:
Listbox1
01 02 03 04 02 05 06 04
01 03 04 03 05 01 07 05
02 03 02 04 07 04 07 10
A saída para Listbox2, ficaria assim:
Listbox2
01 02 03 04 05 06
01 03 04 05 07
02 03 04 07 10
(ou se for mais fácil pode eliminar no próprio Listbox1, sem enviar para o Listbox2, tambem me serve)
Eu comecei o código, mas não consigo dar continuidade.
Private Sub cdmRetiraDuplicidades_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cdmRetiraDuplicidades.Click
Dim Produtos() As String
Dim Lista
Dim Unidades
For Lista = 0 To lstGerada.Items.Count - 1
Produtos = Split(Listbox1.Items(Lista), [Ô] [Ô])
For Unidades = 0 To UBound(Produtos)

Desde já agradeço

FOXMAN 03/08/2017 11:25:53
#475598
Como está sendo montado os dados do Listbox1 ??? De onde vem os dados ???
Isso pode ser resolvido diretamente no banco de dados (caso os dados venha de algum banco)
Outra opção porém menos recomendada é ao adicionar o dado no listbox percorrer ele para localizar algo semelhante(eu particularmente não faria assim).


E a opção que recomendo seria :


Dim items(Listbox1.Items.Count - 1) As Object
Listbox1.Items.CopyTo(items, 0)
Listbox1.Items.Clear()
Listbox1.Items.AddRange(items.AsEnumerable().Distinct().ToArray())







TRINDADI 06/08/2017 13:58:01
#475624
Citação:

:
Bom dia pessoal.
Alguém poderia me ajudar! Eu preciso percorrer um Listbox e eliminar os números repetidos dele.
Ex:
Listbox1
01 02 03 04 02 05 06 04
01 03 04 03 05 01 07 05
02 03 02 04 07 04 07 10
A saída para Listbox2, ficaria assim:
Listbox2
01 02 03 04 05 06
01 03 04 05 07
02 03 04 07 10
(ou se for mais fácil pode eliminar no próprio Listbox1, sem enviar para o Listbox2, tambem me serve)
Eu comecei o código, mas não consigo dar continuidade.
Private Sub cdmRetiraDuplicidades_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cdmRetiraDuplicidades.Click
Dim Produtos() As String
Dim Lista
Dim Unidades
For Lista = 0 To lstGerada.Items.Count - 1
Produtos = Split(Listbox1.Items(Lista), [Ô] [Ô])
For Unidades = 0 To UBound(Produtos)

Desde já agradeço



TRINDADI 06/08/2017 14:03:05
#475625
Citação:

:
Como está sendo montado os dados do Listbox1 ??? De onde vem os dados ???
Isso pode ser resolvido diretamente no banco de dados (caso os dados venha de algum banco)
Outra opção porém menos recomendada é ao adicionar o dado no listbox percorrer ele para localizar algo semelhante(eu particularmente não faria assim).


E a opção que recomendo seria :


Dim items(Listbox1.Items.Count - 1) As Object
Listbox1.Items.CopyTo(items, 0)
Listbox1.Items.Clear()
Listbox1.Items.AddRange(items.AsEnumerable().Distinct().ToArray())









FOXMAN, obrigado pela resposta. Seu código funciona para eliminar a linha toda: Eu preciso que elimine apenas elementos dentro da linha;
Estava pensando em fazer um split dentro de um textbox, e enviar para outro Listbox. Se alguem tiver uma idéia eu agradeço.
JABA 06/08/2017 16:44:33
#475626
Resposta escolhida
Private Function EliminaRepetidos(sequencia As String) As String
Return String.Join([Ô] [Ô], Split(sequencia, [Ô] [Ô]).Distinct.ToArray)
End Function

[ô]PARA USAR:

For i As Integer = 0 To lstGerada.Items.Count - 1
lstGerada.Items(i) = EliminaRepetidos(lstGerada.Items(i))
Next

TRINDADI 06/08/2017 22:32:35
#475631
Citação:

:

Private Function EliminaRepetidos(sequencia As String) As String
Return String.Join([Ô] [Ô], Split(sequencia, [Ô] [Ô]).Distinct.ToArray)
End Function

[ô]PARA USAR:

For i As Integer = 0 To lstGerada.Items.Count - 1
lstGerada.Items(i) = EliminaRepetidos(lstGerada.Items(i))
Next



Valeu Jabá,
Perfeito funcionou.Muito obrigado
Tópico encerrado , respostas não são mais permitidas