elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Eliminar duplicados o repetidos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Eliminar duplicados o repetidos  (Leído 12,160 veces)
luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Eliminar duplicados o repetidos
« en: 27 Abril 2015, 15:08 pm »

Hola a todos
bueno aca estoy de nuevo :) con mis rollos

no encuentro la manera de eliminar datos repetidos he puesto por todos lados pero no me filtra los registros repetidos se como hacerlo con variables pero como aca pongo todas las variables juntas en un testbox ;( me da ese fallo

01 02 03 04 05 06 07 08 09
01 02 03 04 05 06 07 08 09




Código
  1. Dim Lnumbers As List(Of IEnumerable(Of Integer)) = { SM18, SM17, SM16, SM14....,}.Distinct.ToList
  2.  
  3.  
  4.      For Each col As IEnumerable(Of Integer) In Lnumbers
  5.  
  6.  
  7.  
  8.            ListBox23.Items.Add(String.Join(", ", From value As Integer In col
  9.                                                                      Select If(value.ToString.Length = 1I,
  10.                                                                                value.ToString.Insert(0I, "0"c),
  11.                                                                                value.ToString)))
  12.        Next col



Luis


« Última modificación: 1 Mayo 2015, 20:55 pm por luis456 » En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Eliminar duplicados o repetidos
« Respuesta #1 en: 27 Abril 2015, 16:37 pm »

Una forma de hacerlo sería utilizando la clausura Where para evaluar si la colección contiene el mismo elemento más de una vez, otra forma sería utilizar la clausura Group By para agrupar por números y luego seleccionar el primer elemento de la agrupación (Enumerable.First) con la claúsura Select (evitando así duplicados).

Where Clause (Visual Basic) - MSDN
Group By Clause (Visual Basic) - MSDN

Saludos


« Última modificación: 27 Abril 2015, 16:43 pm por Eleкtro » En línea



luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: Eliminar duplicados o repetidos
« Respuesta #2 en: 28 Abril 2015, 10:24 am »

Una forma de hacerlo sería utilizando la clausura Where para evaluar si la colección contiene el mismo elemento más de una vez, otra forma sería utilizar la clausura Group By para agrupar por números y luego seleccionar el primer elemento de la agrupación (Enumerable.First) con la claúsura Select (evitando así duplicados).

Where Clause (Visual Basic) - MSDN
Group By Clause (Visual Basic) - MSDN

Saludos


Hola  corrigeme en algo. tendria que pasar el contenido del tesbox a una variable para poder hacer el filtrado ?

luis


En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Eliminar duplicados o repetidos
« Respuesta #3 en: 28 Abril 2015, 14:16 pm »

Tienes que modificar la query de LINQ que estás utilizando en el código de arriba, pero añadiéndole las clausulas necesarias para evitar duplicados.

Es facil. En las urls que te mostré tienes ejemplos.

Sigo sin ver que lo hayas intentado.

Saludos
En línea



luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: Eliminar duplicados o repetidos
« Respuesta #4 en: 28 Abril 2015, 15:01 pm »


 "Sigo sin ver que lo hayas intentado ".

No es eso es que estoy pasando unas formulas jejej y he ido de pasada, no he tenido tiempo de miralo con detenimiento ahora estoy mas urgido de pasar esas formulas que tienen que ver con la pregunta pero primero acabare pasarlas :)

luis
En línea

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


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: Eliminar duplicados o repetidos
« Respuesta #5 en: 30 Abril 2015, 13:27 pm »

Bueno creo que solo naci para las tuercas ;)

trato con los ejemplos que hay en las paginas de msdn que me pasaste pero aparte que no hablo chino jeje tengo que usar el traductor que habla como indio y me enredo mas y estos ejemplos estan orientados a bases de datos y mas me enrollo jejej.

Código
  1. Public Class Form1
  2.  
  3.    ' eliminar registros iguales en  " Lnumbers "
  4.    ' eliminar registros MENORES a MAX
  5.    ' En este codigo deberia quedar un solo registro de los cuatro
  6.  
  7.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  8.        Dim col1 As IEnumerable(Of Integer) = {1, 5, 6, 7, 8, 9, 10, 11}
  9.        Dim col2 As IEnumerable(Of Integer) = {1, 5, 6, 7, 8, 9, 10, 11}
  10.        Dim col3 As IEnumerable(Of Integer) = {1, 2, 8, 6, 9}
  11.        Dim col4 As IEnumerable(Of Integer) = {2, 2, 3}
  12.        Dim MAX As Integer = 10
  13.  
  14.  
  15.        Dim Lnumbers As List(Of IEnumerable(Of Integer)) = {col1, col2, col3, col4}.ToList
  16.  
  17.  
  18.        For Each col As IEnumerable(Of Integer) In Lnumbers
  19.  
  20.  
  21.  
  22.            ListBox1.Items.Add(String.Join(", ", From value As Integer In col
  23.                                                                      Select If(value.ToString.Length = 1I,
  24.                                                                                value.ToString.Insert(0I, "0"c),
  25.                                                                                value.ToString)))
  26.  
  27.  
  28.        Next col
  29.  
  30.        '***********************aca me tranco
  31.  
  32.        Dim concatCol As IEnumerable(Of Integer) = Lnumbers
  33.        Dim distinctCol As IEnumerable(Of Integer) = concatCol
  34.        Dim selectCol As IEnumerable(Of Integer) = distinctCol.Select(Function(value As Integer)
  35.                                                                          If value = MAX Then
  36.                                                                              Return value
  37.                                                                          Else
  38.  
  39.                                                                              Return value
  40.                                                                          End If
  41.  
  42.                                                                      End Function)
  43.  
  44.  
  45.        ListBox2.Items.AddRange(selectCol.Cast(Of Object).ToArray)
  46.  
  47.    End Sub
  48.  
  49. End Class
En línea

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


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: Eliminar duplicados o repetidos
« Respuesta #6 en: 30 Abril 2015, 17:45 pm »

AAAAAAAAAAAAAAAAAA

TAMPOCO


Código
  1. Dim products = Lnumbers
  2.  
  3.        Dim cat = From value In products _
  4.                            Select value _
  5.                            Distinct
  6.  
  7.        For Each n In cat
  8.  
  9.            ListBox2.Items.Add(String.Join(", ", From value As Integer In n
  10.                                                                      Select If(value.ToString.Length = 1I,
  11.                                                                                value.ToString.Insert(0I, "0"c),
  12.                                                                                value.ToString)))
  13.        Next
En línea

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


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: Eliminar duplicados o repetidos
« Respuesta #7 en: 30 Abril 2015, 19:18 pm »

Bueno consegui solucionar uno de los problemas :) y es eliminar del listbox los repetidos pero los completos o sea los que tienen 10 registros  ;( alguien se anima a mejorarlo para que no me queden a si

02 03 05
01 02 03 04 05
02 05 06 07 0 9

y me deje solo los registros completos  ?


Código
  1. Public Class Form1
  2.  
  3.    ' eliminar registros iguales en  " Lnumbers " lo solucione quitandolos del listxbo
  4.    ' eliminar registros MENORES a MAX
  5.    ' En este codigo deberia quedar un solo registro de los cuatro
  6.  
  7.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  8.        Dim col1 As IEnumerable(Of Integer) = {1, 5, 6, 7, 8, 9, 10, 11}
  9.        Dim col2 As IEnumerable(Of Integer) = {1, 5, 6, 7, 8, 9, 10, 11}
  10.        Dim col3 As IEnumerable(Of Integer) = {1, 2, 8, 6, 9}
  11.        Dim col4 As IEnumerable(Of Integer) = {2, 2, 3}
  12.        Dim MAX As Integer = 10
  13.  
  14.  
  15.        Dim Lnumbers As List(Of IEnumerable(Of Integer)) = {col1, col2, col3, col4}.ToList
  16.  
  17.  
  18.        For Each col As IEnumerable(Of Integer) In Lnumbers
  19.  
  20.            ListBox1.Items.Add(String.Join(", ", From value As Integer In col
  21.                                                                      Select If(value.ToString.Length = 1I,
  22.                                                                                value.ToString.Insert(0I, "0"c),
  23.                                                                                value.ToString)))
  24.  
  25.        Next col
  26.    End Sub
  27.  
  28.  
  29.    '*****************************************preubas**********
  30.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  31.        ' Le pasa el Listbox a la función
  32.        MsgBox(Eliminar(ListBox1), _
  33.               MsgBoxStyle.Information, _
  34.               "Elementos duplicados en el List ")
  35.    End Sub
  36.    Function Eliminar(ByVal LB As ListBox) As Int32
  37.        Dim i As Int32
  38.        Dim j As Int32
  39.        Dim n As Int32
  40.  
  41.        ' Recorre los items ( copara empezando _
  42.        'desde el primero , de abajo hacia arriba)
  43.        For i = 0 To LB.Items.Count - 2
  44.            For j = LB.Items.Count - 1 To i + 1 Step -1
  45.                ' verifica si es el mismo
  46.                If LB.Items(i).ToString = LB.Items(j).ToString Then
  47.                    ' elimina el elemento indicando el índice
  48.                    LB.Items.RemoveAt(j)
  49.                    n += 1 'lleva la cuenta de los duplicados
  50.                End If
  51.            Next
  52.        Next
  53.        Return n ' retorna los eliminados
  54.    End Function
  55. End Class

los ejemplos  (los 100)  ;)  no me aclaran nada

Luis
En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Eliminar duplicados o repetidos
« Respuesta #8 en: 30 Abril 2015, 20:39 pm »

Especifica claramente lo de los duplicados, dices que en este ejemplo solo debe quedar una secuencia (o eso entiendo por "registro"), ¿cual?, y ¿por qué?.

Citar
Código
  1. Dim col1 As IEnumerable(Of Integer) = {1, 5, 6, 7, 8, 9, 10, 11}
  2. Dim col2 As IEnumerable(Of Integer) = {1, 5, 6, 7, 8, 9, 10, 11}
  3. Dim col3 As IEnumerable(Of Integer) = {1, 2, 8, 6, 9}
  4. Dim col4 As IEnumerable(Of Integer) = {2, 2, 3}

¿Quieres dscartar los valores duplicados entre cada decuencia?, ¿o quieres descartar la secuencia entera en caso de que algún valor esté repetido con los valores de otra de las secuencias?, por que ambas cosas son muy distintas.

Da más detalles

Saludos
« Última modificación: 30 Abril 2015, 20:43 pm por Eleкtro » En línea



luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: Eliminar duplicados o repetidos
« Respuesta #9 en: 30 Abril 2015, 21:03 pm »

Especifica claramente lo de los duplicados, dices que en este ejemplo solo debe quedar una secuencia (o eso entiendo por "registro"), ¿cual?, y ¿por qué?.

¿Quieres dscartar los valores duplicados entre cada decuencia?, ¿o quieres descartar la secuencia entera en caso de que algún valor esté repetido con los valores de otra de las secuencias?, por que ambas cosas son muy distintas.

Da más detalles

Saludos


eliminar de la lista los resultados como te muestro


01, 03, 04, 05, 06, 08<----X
01, 03, 04, 05, 06, 08 <----repite con el anterior
01, 03, 04, 05, 09, 30
01, 03, 04, 05, 30, 30 <----X
01, 03, 04, 05, 30, 40 <----repite con el anterior
01, 03, 04, 05, 30, 40 <----repite con el anterior
01, 03, 04, 06, 07 <--------no llega a la cantidad
01, 03, 04,<----------------no llega a la cantidad 
01, 03, 04, 06, 08, 09
01, 03, 04, 06, 08, 27
01, 03, 04, 06, 08, 49
01, 03, 04, 06, 12<--------no llega a la cantidad

es eliminar los que sean iguales claro esta dejando uno solo de los que repiten :)
y los que no llegan a tener la cantida establecida eliminarlos.

aca van dos numeros estos si eliminar ya que son iguales en todo Y dejar un solo registro

01, 03, 04, 05, 30, 40 <----
01, 03, 04, 05, 30, 40 <----repite con el anterior


estos dejar ya que son diferentes aunque sea un solo numero

01, 03, 04, 05, 30, 40
01, 03, 04, 05, 30, 80

eliminar repetidos y que no cumplan la cantida establecida que seria MAX=10






En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Eliminar duplicados fichero binario
Programación C/C++
andrewmetal93 1 2,274 Último mensaje 9 Mayo 2012, 19:23 pm
por andrewmetal93
Eliminar Caracteres Repetidos « 1 2 »
.NET (C#, VB.NET, ASP)
birdez 11 17,273 Último mensaje 31 Mayo 2012, 18:21 pm
por birdez
eliminar datos duplicados array enteros
Java
javaman666 2 2,861 Último mensaje 9 Abril 2014, 12:28 pm
por Zoik
[Comparar ArrayList] Eliminar Duplicados
Java
Kataplaf 0 2,495 Último mensaje 21 Agosto 2015, 17:35 pm
por Kataplaf
eliminar números repetidos de dos vectores
Programación C/C++
creiko 4 3,771 Último mensaje 15 Abril 2016, 20:05 pm
por HardForo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines