Eliminar registros iguales condicionados :(

Iniciado por luis456, 23 Marzo 2020, 14:17 PM

0 Miembros y 2 Visitantes están viendo este tema.

luis456

Trabajando con este código de combinaciones o permutas ?? quiero eliminar los registros que dupliquen los números o que tengan los mismos números en diferente orden dejando solo uno de ellos ya que me repite muchos registros donde tienen los mismos numeros:
ejemplo

Código (vbnet) [Seleccionar]
Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click
        Dim Elementos As IEnumerable(Of Integer) = {1, 4, 5, 8, 33, 44, 45, 68, 98}
        Dim EleX As Integer = 0
        Dim EleX1 As Integer = 0
        Dim EleX2 As Integer = 0
        Dim EleX3 As Integer = 0
        Dim EleX4 As Integer = 0
        ListBox4.Items.Clear() 'Limpia el ListBox
        For I1 As Integer = 0 To Elementos.Count - 1 : EleX += 1
            For I2 As Integer = EleX To Elementos.Count - 1
                For I3 As Integer = EleX To Elementos.Count - 2
                    For I4 As Integer = EleX To Elementos.Count - 3
                        For I5 As Integer = EleX To Elementos.Count - 4
                            For I6 As Integer = EleX To Elementos.Count - 5
                                If Elementos(I2) <> Elementos(I3) And Elementos(I3) <> Elementos(I2) < Elementos(I4) < Elementos(I5) Then
                                    ListBox4.Items.Add(String.Format(Format1, Elementos(I1), Elementos(I2), Elementos(I3), Elementos(I4), Elementos(I5), Elementos(I6)))
                                End If

                            Next
                        Next
                    Next
                Next
            Next
        Next
        MessageBox.Show("Combinaciones: " & ListBox4.Items.Count)
    End Sub



estoy tratando de implentarle esta funcion pero no me sale

Código (vbnet) [Seleccionar]
'//QUITAR ELEMENTOS REPETIDOS --------------------funciona bien con otra funcione con esta me da error
        Dim nuevaLista As New List(Of Integer)
        For Each elemento In ListBox4.Items
            nuevaLista.Add(elemento)
        Next

        nuevaLista = nuevaLista.Distinct.ToList() 'elimina repetidos
        nuevaLista.Sort() 'Ordena la lista
        ListBox4.Items.Clear() 'limpia el listbox (no funciona con DataSource)
        'ListBox4.DataSource= Nothing 'usar solo si es se usó datasource para llenar el listbox
        For Each Elemento As String In nuevaLista
            ListBox4.Items.Add(Elemento)
        Next



saludos
Luis



Que tu sabiduria no sea motivo de Humillacion para los demas

**Aincrad**

Cita de: luis456 en 23 Marzo 2020, 14:17 PMListBox1.Items.Add(String.Format(Format1, Elementos(I1), Elementos(I2), Elementos(I3), Elementos(I4), Elementos(I5), Elementos(I6)))

"Format1" que formato le estas dando al String? .




luis456

Cita de: **Aincrad** en 23 Marzo 2020, 14:39 PM
"Format1" que formato le estas dando al String? .

Fue la solución que me dio el visual ya que antes usaba
Código (vbnet) [Seleccionar]
String.Format("{0:00}, {1:00}, {2:00}

pero me daba error ??

saludos
Que tu sabiduria no sea motivo de Humillacion para los demas

**Aincrad**

Osea, muestrame la salida en el listbox, osea un imagen de como van los numero . asi puedo identificar el formato que estas usando. ya que hay 6 elementos.

que serian algo como : {0}{1}{2}{3}{4}{5} . necesito ver la salida.




luis456

lo que me muestra el lisbtox es esto: salen muchos registros (8747)  pero si te fijas en la muestra ,el ultimo si cumple la condición de números diferentes ,no debe tener números repetidos en cada registro

01.04.05.04.04.05
01.04.05.04.04.08
01.04.05.04.04.33

08.98.45.33.44.05 <------tiene que tener números diferentes como este registro

gracias por tu atencion
Luis
Que tu sabiduria no sea motivo de Humillacion para los demas