Autor
|
Tema: Eliminar duplicados o repetidos (Leído 12,068 veces)
|
luis456
Desconectado
Mensajes: 551
|
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 Dim Lnumbers As List(Of IEnumerable(Of Integer)) = { SM18, SM17, SM16, SM14....,}.Distinct.ToList For Each col As IEnumerable(Of Integer) In Lnumbers ListBox23.Items.Add(String.Join(", ", From value As Integer In col Select If(value.ToString.Length = 1I, value.ToString.Insert(0I, "0"c), value.ToString))) 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
Mensajes: 9.878
|
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) - MSDNSaludos
|
|
« Última modificación: 27 Abril 2015, 16:43 pm por Eleкtro »
|
En línea
|
|
|
|
luis456
Desconectado
Mensajes: 551
|
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) - MSDNSaludos 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
Mensajes: 9.878
|
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
Mensajes: 551
|
"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
Mensajes: 551
|
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. Public Class Form1 ' eliminar registros iguales en " Lnumbers " ' eliminar registros MENORES a MAX ' En este codigo deberia quedar un solo registro de los cuatro Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim col1 As IEnumerable(Of Integer) = {1, 5, 6, 7, 8, 9, 10, 11} Dim col2 As IEnumerable(Of Integer) = {1, 5, 6, 7, 8, 9, 10, 11} Dim col3 As IEnumerable(Of Integer) = {1, 2, 8, 6, 9} Dim col4 As IEnumerable(Of Integer) = {2, 2, 3} Dim MAX As Integer = 10 Dim Lnumbers As List(Of IEnumerable(Of Integer)) = {col1, col2, col3, col4}.ToList For Each col As IEnumerable(Of Integer) In Lnumbers ListBox1.Items.Add(String.Join(", ", From value As Integer In col Select If(value.ToString.Length = 1I, value.ToString.Insert(0I, "0"c), value.ToString))) Next col '***********************aca me tranco Dim concatCol As IEnumerable(Of Integer) = Lnumbers Dim distinctCol As IEnumerable(Of Integer) = concatCol Dim selectCol As IEnumerable(Of Integer) = distinctCol.Select(Function(value As Integer) If value = MAX Then Return value Else Return value End If End Function) ListBox2.Items.AddRange(selectCol.Cast(Of Object).ToArray) End Sub End Class
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
luis456
Desconectado
Mensajes: 551
|
AAAAAAAAAAAAAAAAAA TAMPOCO Dim products = Lnumbers Dim cat = From value In products _ Select value _ Distinct For Each n In cat ListBox2.Items.Add(String.Join(", ", From value As Integer In n Select If(value.ToString.Length = 1I, value.ToString.Insert(0I, "0"c), value.ToString))) Next
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
luis456
Desconectado
Mensajes: 551
|
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 ? Public Class Form1 ' eliminar registros iguales en " Lnumbers " lo solucione quitandolos del listxbo ' eliminar registros MENORES a MAX ' En este codigo deberia quedar un solo registro de los cuatro Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim col1 As IEnumerable(Of Integer) = {1, 5, 6, 7, 8, 9, 10, 11} Dim col2 As IEnumerable(Of Integer) = {1, 5, 6, 7, 8, 9, 10, 11} Dim col3 As IEnumerable(Of Integer) = {1, 2, 8, 6, 9} Dim col4 As IEnumerable(Of Integer) = {2, 2, 3} Dim MAX As Integer = 10 Dim Lnumbers As List(Of IEnumerable(Of Integer)) = {col1, col2, col3, col4}.ToList For Each col As IEnumerable(Of Integer) In Lnumbers ListBox1.Items.Add(String.Join(", ", From value As Integer In col Select If(value.ToString.Length = 1I, value.ToString.Insert(0I, "0"c), value.ToString))) Next col End Sub '*****************************************preubas********** Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' Le pasa el Listbox a la función MsgBox(Eliminar(ListBox1), _ MsgBoxStyle.Information, _ "Elementos duplicados en el List ") End Sub Function Eliminar(ByVal LB As ListBox) As Int32 Dim i As Int32 Dim j As Int32 Dim n As Int32 ' Recorre los items ( copara empezando _ 'desde el primero , de abajo hacia arriba) For i = 0 To LB.Items.Count - 2 For j = LB.Items.Count - 1 To i + 1 Step -1 ' verifica si es el mismo If LB.Items(i).ToString = LB.Items(j).ToString Then ' elimina el elemento indicando el índice LB.Items.RemoveAt(j) n += 1 'lleva la cuenta de los duplicados End If Next Next Return n ' retorna los eliminados End Function 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
Mensajes: 9.878
|
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é?. Dim col1 As IEnumerable(Of Integer) = {1, 5, 6, 7, 8, 9, 10, 11} Dim col2 As IEnumerable(Of Integer) = {1, 5, 6, 7, 8, 9, 10, 11} Dim col3 As IEnumerable(Of Integer) = {1, 2, 8, 6, 9} 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
Mensajes: 551
|
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
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Eliminar duplicados fichero binario
Programación C/C++
|
andrewmetal93
|
1
|
2,244
|
9 Mayo 2012, 19:23 pm
por andrewmetal93
|
|
|
Eliminar Caracteres Repetidos
« 1 2 »
.NET (C#, VB.NET, ASP)
|
birdez
|
11
|
17,165
|
31 Mayo 2012, 18:21 pm
por birdez
|
|
|
eliminar datos duplicados array enteros
Java
|
javaman666
|
2
|
2,844
|
9 Abril 2014, 12:28 pm
por Zoik
|
|
|
[Comparar ArrayList] Eliminar Duplicados
Java
|
Kataplaf
|
0
|
2,470
|
21 Agosto 2015, 17:35 pm
por Kataplaf
|
|
|
eliminar números repetidos de dos vectores
Programación C/C++
|
creiko
|
4
|
3,707
|
15 Abril 2016, 20:05 pm
por HardForo
|
|