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

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  De nuevo con los filtros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: De nuevo con los filtros  (Leído 3,201 veces)
luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
De nuevo con los filtros
« en: 4 Octubre 2015, 12:33 pm »

Hola

Recien resolvi o mejor dicho me resolvieron unas dudas gracias a como siempre elektro jejej ahora vengo de nuevo con algo que lo mejor es una bobera pero ya me volvi loco buscando la solucion

Explico

tengo este codigo

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  4.        Dim valuesInt As IEnumerable(Of Integer) =
  5.    {0, 1, 4, 6, 2, 8, 7}
  6.  
  7.        Dim pairs As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of Integer))) =
  8.            From value As Integer In valuesInt
  9.            Select New KeyValuePair(Of Integer, IEnumerable(Of Integer))(
  10.                   key:=value,
  11.                   value:=From index As Integer In valuesInt
  12.                          Where index <> Integer.Parse(CStr(value).Last)
  13.                          Select CInt(value & index))
  14.  
  15.        For Each pair As KeyValuePair(Of Integer, IEnumerable(Of Integer)) In pairs
  16.  
  17.            ListBox1.Items.Add(String.Format("Key: {0,-4} Values: {1}", pair.Key, String.Join(", ", pair.Value)))
  18.  
  19.        Next pair
  20.    End Sub
  21. End Class


lo que no puedo hacer una limitacion de los resultados o sea que si los numeros muestran del 01 al 89 y yo quiera mostrar solo desde el 01 al 50 ,no se ya que tampoco he logrado pasar estos resultados a otra variable que yo pueda o conosca manejar ya que con "pair.Key " no tengo ide de como manejar esto .


Luis










« Última modificación: 9 Octubre 2015, 10:41 am por luis456 » En línea

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

Mensajes: 9.866



Ver Perfil
Re: De nuevo con los filtros
« Respuesta #1 en: 4 Octubre 2015, 14:59 pm »

Retomando la función que te mostré aquí:
http://foro.elhacker.net/net/formar_pares_de_numeros-t442316.0.html;msg2041620#msg2041620

Le puedes añadir un parámetro opcional para limitar el valor máximo que se debe devolver.

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  4.  
  5.        Dim valuesInt As IEnumerable(Of Integer) =
  6.            {0, 1, 4, 6, 2, 8, 7}
  7.  
  8.        Dim pairs As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of Integer))) =
  9.            Form1.GetPairs(valuesInt, maxValue:=50)
  10.  
  11.        For Each pair As KeyValuePair(Of Integer, IEnumerable(Of Integer)) In pairs
  12.  
  13.            ListBox1.Items.Add(String.Format("Key: {0,-4} Values: {1}", pair.Key, String.Join(", ", pair.Value)))
  14.  
  15.        Next pair
  16.  
  17.    End Sub
  18.  
  19.    Public Shared Function GetPairs(ByVal col As IEnumerable(Of Integer),
  20.                                    Optional ByVal maxValue As Integer = Integer.MaxValue) As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of Integer)))
  21.  
  22.        If (col.Max >= 10) Then
  23.            Throw New ArgumentException(paramName:="col", message:="El valor máximo de la colección debe ser un valor inferior a 10.")
  24.  
  25.        Else
  26.  
  27.            Return From value As Integer In col
  28.                   Select New KeyValuePair(Of Integer, IEnumerable(Of Integer))(
  29.                          key:=value,
  30.                          value:=From index As Integer In Enumerable.Range(1, 9)
  31.                                 Where (index <> value) AndAlso (CInt(value & index) <= maxValue)
  32.                                 Select CInt(value & index))
  33.        End If
  34.  
  35.    End Function
  36.  
  37. End Class

Saludos


En línea



luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: De nuevo con los filtros
« Respuesta #2 en: 4 Octubre 2015, 21:57 pm »

Retomando la función que te mostré aquí:
http://foro.elhacker.net/net/formar_pares_de_numeros-t442316.0.html;msg2041620#msg2041620

Le puedes añadir un parámetro opcional para limitar el valor máximo que se debe devolver.

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  4.  
  5.        Dim [color=yellow]valuesInt[/color] As IEnumerable(Of Integer) =
  6.            {0, 1, 4, 6, 2, 8, 7}
  7.  
  8.        Dim pairs As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of Integer))) =
  9.            Form1.GetPairs(valuesInt, maxValue:=50)
  10.  
  11.        For Each pair As KeyValuePair(Of Integer, IEnumerable(Of Integer)) In pairs
  12.  
  13.            ListBox1.Items.Add(String.Format("Key: {0,-4} Values: {1}", pair.Key, String.Join(", ", pair.Value)))
  14.  
  15.        Next pair
  16.  
  17.    End Sub
  18.  
  19.    Public Shared Function GetPairs(ByVal col As IEnumerable(Of Integer),
  20.                                    Optional ByVal maxValue As Integer = Integer.MaxValue) As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of Integer)))
  21.  
  22.        If (col.Max >= 10) Then
  23.            Throw New ArgumentException(paramName:="col", message:="El valor máximo de la colección debe ser un valor inferior a 10.")
  24.  
  25.        Else
  26.  
  27.            Return From value As Integer In col
  28.                   Select New KeyValuePair(Of Integer, IEnumerable(Of Integer))(
  29.                          key:=value,
  30.                          value:=From index As Integer In Enumerable[color=red].Range(1, 9)[/color]
  31.                                 Where (index <> value) AndAlso (CInt(value & index) <= maxValue)
  32.                                 Select CInt(value & index))
  33.        End If
  34.  
  35.    End Function
  36.  
  37. End Class

Saludos


Hola Elektro

No te habia respondido porque me quede dormido jejej ,bien tengo el siguiente problema con esto, ya en el anterior lo habia resuelto pero en este no se, como sabes los numeros de la variable valuesIn no mantienen la misma cantidad de numeros en cada ejecucion y estos varian. en donde esta lo de Range(1, 9) aunque en la variable haya menos numeros me toma como que si hubieran los 9 siempre


Como siempre gracias

Luis


edicto jejej creo lo resolvi pero corrigeme si estoy pelado

Código
  1.  
  2.            Return From value As Integer In col
  3.                   Select New KeyValuePair(Of Integer, IEnumerable(Of Integer))(
  4.                          key:=value,
  5.                          value:=From index As Integer In col
  6.                                 Where (index <> value) AndAlso (CInt(value & index) <= maxValue)
  7.                                 Select CInt(value & index))













« Última modificación: 4 Octubre 2015, 22:01 pm por luis456 » En línea

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


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: De nuevo con los filtros
« Respuesta #3 en: 7 Octubre 2015, 13:58 pm »

Bueno sigo con mis enredos aunque ya esta resuelta la pregunta ahora me encuentro en otra dimension desconocida jejej se como se convierten ya las variables pero no de este tipo


codigo

Código
  1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  2.  
  3.        Dim valuesInt As IEnumerable(Of Integer) =
  4.            {0, 1, 2, 4, 6, 7, 8}
  5.  
  6.        Dim pairs As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of Integer))) =
  7.            Form1.GetPairs(valuesInt, maxValue:=80)
  8.  
  9.        For Each pair As KeyValuePair(Of Integer, IEnumerable(Of Integer)) In pairs
  10.  
  11.            ListBox1.Items.Add(String.Format("Key: {0,-4} Values: {1}", pair.Key, String.Join(", ", pair.Value)))
  12.  
  13.        Next pair
  14.  
  15.    End Sub
  16.  
  17.    Public Shared Function GetPairs(ByVal col As IEnumerable(Of Integer),
  18.                                    Optional ByVal maxValue As Integer = Integer.MaxValue) As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of Integer)))
  19.  
  20.        If (col.Max >= 10) Then
  21.            Throw New ArgumentException(paramName:="col", message:="El valor máximo de la colección debe ser un valor inferior a 10.")
  22.  
  23.        Else
  24.  
  25.            Return From value As Integer In col
  26.                   Select New KeyValuePair(Of Integer, IEnumerable(Of Integer))(
  27.                          key:=value,
  28.                          value:=From index As Integer In Enumerable.Range(1, 9)
  29.                                 Where (index <> value) AndAlso (CInt(value & index) <= maxValue)
  30.                                 Select CInt(value & index))
  31.        End If
  32.  
  33.    End Function
  34.  
  35. End Class


esto entrega estos resultados y quiero pasarlos a unas variables normalitas jejje

Key: 0    Values: 1, 2, 4, 5, 6, 7, 8
Key: 1    Values: 10, 12, 14, 15, 16, 17, 18
Key: 2    Values: 20, 21, 24, 25, 26, 27, 28
Key: 4    Values: 40, 41, 42, 45, 46, 47, 48
Key: 5    Values: 50, 51, 52, 54, 56, 57, 58
Key: 6    Values: 60, 61, 62, 64, 65, 67, 68
Key: 7    Values: 70, 71, 72, 74, 75, 76, 78
Key: 8    Values: 80, 81, 82, 84, 85, 86, 87


 como puedo meter en cada variable los valores de cada key
ejemplo
variable 0 = 1, 2, 4, 5, 6, 7, 8
variable 1= 10, 12, 14, 15, 16, 17, 18
variable 2= 20, 21, 24, 25, 26, 27, 28


Luis








En línea

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

Mensajes: 9.866



Ver Perfil
Re: De nuevo con los filtros
« Respuesta #4 en: 7 Octubre 2015, 14:47 pm »

Lo tienes perfecto tal y como está, es más productivo así.

Creo que solo necesitas un ejemplo de cómo usar el índice (no deberías necesitar un ejemplo a estas alturasss), como el siguiente, por que yo no le veo ninguna dificultad de accesibilidad adicional entre hacer esto:
Código
  1. ' Dim pairs As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of Integer))) = ...
  2. MsgBox(String.Join(", ", pairs(0).Value))

...o hacer esto otro:
Código
  1. ' Dim col As IEnumerable(Of IEnumerable(Of Integer)) = ...
  2. MsgBox(String.Join(", ", col(0)))

Para hacer lo segundo, cosa que repito ...es innecesario, pero bueno, tendrías que modificar el tipo de objeto que maneja la función, para devolver un IEnumerable(Of IEnumerable(Of Integer)) claro está...

Saludos!
« Última modificación: 7 Octubre 2015, 14:50 pm por Eleкtro » En línea



luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: De nuevo con los filtros
« Respuesta #5 en: 7 Octubre 2015, 15:08 pm »

Lo tienes perfecto tal y como está, es más productivo así.

Creo que solo necesitas un ejemplo de cómo usar el índice (no deberías necesitar un ejemplo a estas alturasss), como el siguiente, por que yo no le veo ninguna dificultad de accesibilidad adicional entre hacer esto:
Código
  1. ' Dim pairs As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of Integer))) = ...
  2. MsgBox(String.Join(", ", pairs(0).Value))

...o hacer esto otro:
Código
  1. ' Dim col As IEnumerable(Of IEnumerable(Of Integer)) = ...
  2. MsgBox(String.Join(", ", col(0)))

Para hacer lo segundo, cosa que repito ...es innecesario, pero bueno, tendrías que modificar el tipo de objeto que maneja la función, para devolver un IEnumerable(Of IEnumerable(Of Integer)) claro está...

Saludos!

Hola
bien es que la idea de tener cada key o valor dentro de una variable es por ejemplo pongamos el 0 :

Key: 0    Values: 1, 2, 4, 5, 6, 7, 8

nesecitaria dado el caso hacer combinaciones  con la clave o key 2

key 2     values:  20, 21, 24, 25, 26, 27, 28

ejemplo
si los concateno key 0 + key 2 = 1, 2, 4, 5, 6, 7, 8 ,20, 21, 24, 25, 26, 27, 28


No nesecito que esten todos los numeros en una variable, si no cada grupo en su respectiva
variable para yo poder hacer calculos con cada una o entre ellas  :)


Luis


En línea

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


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: De nuevo con los filtros
« Respuesta #6 en: 8 Octubre 2015, 16:35 pm »

Creo a si van los tiros  :silbar:


Código
  1. Dim M1 As IEnumerable(Of Integer) = pairs(1).Value.ToList
  2.        Dim juntos2 As List(Of Integer) = M1
  3.        juntos2.Sort()
  4.        Me.ListBox2.Items.AddRange((From value As Integer In M1).Cast(Of Object).ToArray)  


Ya listo

Luis
En línea

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

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Filtros
Programación Visual Basic
Gonza100 6 2,261 Último mensaje 20 Noviembre 2005, 23:41 pm
por Gonza100
filtros de red?????
Electrónica
raduan1984 0 2,823 Último mensaje 31 Marzo 2008, 14:13 pm
por raduan1984
K-Lite Codec Pack 6.8.0. Nuevo paquete de códecs K-Lite Codec Pack con filtros..
Software
wolfbcn 1 4,647 Último mensaje 16 Enero 2011, 15:29 pm
por nichihack
Vista Codec Package 6.1.2 Final de nuevo disponible con filtros y códecs ....
Noticias
wolfbcn 0 4,169 Último mensaje 12 Diciembre 2011, 18:27 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines