Autor
|
Tema: formar combinaciones de 7 y 8 numeros con 25 numeros (Leído 28,791 veces)
|
luis456
Desconectado
Mensajes: 548
|
Te explicaré la query de LINQ del primer ejemplo:
1) Creo grupos de los números según su primer dígito (habiendo añadido temporalmente un "0" a los números del 1 al 9), es decir, grupo de números que empiezan por 0, o por 1, 2, 3, etc. Cada grupo contiene todos los números de la colección que empiecen por ese primer dígito de la regla. por ejemplo el grupo del "0" contendrá { 02, 08, 09 } (el cero es imaginario)
2) Asigno los grupos a la variable/propiedad 'items'.
3) Instancio un objeto 'LuisLibrary.Group' por cada grupo, al que le asigno el primer número del grupo (items(0)) a la propiedad 'First', y el segundo número del grupo (items(1)) a la propiedad 'Second'.
4) Devuelvo una Lista de los objetos 'LuisLibrary.Group'.
Saludos
O sea que los tres van juntos en el mismo codigo ? luis
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.697
|
¿te refieres a los 3 ejemplos que dí?... no, son 3 ejemplos distintos para conseguir practicamente lo mismo, siendo el primer ejemplo el más elaborado.
saludos.
|
|
« Última modificación: 22 Octubre 2014, 20:37 pm por Eleкtro »
|
En línea
|
|
|
|
luis456
Desconectado
Mensajes: 548
|
hola estoy probando con este codigo y cuando lo ejecuto solo me muestra en el listbox "coleccion" ? hay que hacer mas cosas, la variabe que contiene los numeros es " resultss" Dim groupedValues As List(Of List(Of Integer)) = (From i As Integer In Resultss Group By i.ToString("00").First Into items = Group Select New List(Of Integer) From {items(0), items(1)} ).ToList ListBox3.Items.AddRange(groupedValues.Cast(Of Object).ToArray)
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.697
|
Luis, estoy muy harto de verte cometer el mismo fallo en el mismo punto crítico después de habertelo explicado y resuelto decenas de veces ya :-/ ¿Por qué no practicas un poco todo lo referente a colecciones genéricas y LINQ?. ' Join Enumerables ' ( By Elektro ) ' ' Examples : ' ' Dim listA As New List(Of String) From {"a", "b"} ' Dim listB As New List(Of String) From {"c", "d"} ' Dim newlist As List(Of String) = JoinEnumerables(Of String)({listA, listB}).ToList ' Result: {"a", "b", "c", "d"} ''' <summary> ''' Joins the specified <see cref="IEnumerable"/> colecctions into a single <see cref="IEnumerable"/>. ''' </summary> ''' <typeparam name="T"></typeparam> ''' <param name="enumerables">The <see cref="IEnumerable"/> collections to join.</param> ''' <returns>IEnumerable(Of T).</returns> Friend Function JoinEnumerables(Of T)(ByVal enumerables As IEnumerable(Of T)()) As IEnumerable(Of T) Return enumerables.SelectMany(Function(enumerable As IEnumerable(Of T)) enumerable) End Function
Dim joinedGroups As List(Of Integer) = JoinEnumerables(Of Integer)( (From group As List(Of Integer) In groupedValues Select group).ToArray ).ToList ListBox1.Items.Add(String.Join(", ", joinedGroups))
Espero que eso te ayude a entender un poco más, aunque se que por el momento no vas a entender el parámetro de Type (T), pero bueno xD. Saludos
|
|
« Última modificación: 23 Octubre 2014, 17:55 pm por Eleкtro »
|
En línea
|
|
|
|
luis456
Desconectado
Mensajes: 548
|
Luis, estoy muy harto de verte cometer el mismo fallo en el mismo punto crítico después de habertelo explicado y resuelto decenas de veces ya :-/ ¿Por qué no practicas un poco todo lo referente a colecciones genéricas y LINQ?. ' Join Enumerables ' ( By Elektro ) ' ' Examples : ' ' Dim listA As New List(Of String) From {"a", "b"} ' Dim listB As New List(Of String) From {"c", "d"} ' Dim newlist As List(Of String) = JoinEnumerables(Of String)({listA, listB}).ToList ' Result: {"a", "b", "c", "d"} ''' <summary> ''' Joins the specified <see cref="IEnumerable"/> colecctions into a single <see cref="IEnumerable"/>. ''' </summary> ''' <typeparam name="T"></typeparam> ''' <param name="enumerables">The <see cref="IEnumerable"/> collections to join.</param> ''' <returns>IEnumerable(Of T).</returns> Friend Function JoinEnumerables(Of T)(ByVal enumerables As IEnumerable(Of T)()) As IEnumerable(Of T) Return enumerables.SelectMany(Function(enumerable As IEnumerable(Of T)) enumerable) End Function
Dim joinedGroups As List(Of Integer) = JoinEnumerables(Of Integer)( (From group As List(Of Integer) In groupedValues Select group).ToArray ).ToList ListBox1.Items.Add(String.Join(", ", joinedGroups))
Espero que eso te ayude a entender un poco más, aunque se que por el momento no vas a entender el parámetro de Type (T), pero bueno xD. Saludos Como ya sabes voy a pasos, si me dices que hace cada cosa lo entendería mejor  ya que tengo que ir a preguntar por todo jejej y lo que hago es enredarme mas luis
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.697
|
Como ya sabes voy a pasos, si me dices que hace cada cosa lo entendería mejor  ya que tengo que ir a preguntar por todo jejej y lo que hago es enredarme mas luis A ver Luis, en el código tu tienes una lista que contiene más listas ( List(Of List(Of Integer)) ), y estás intentando mostrar/añadir la lista que contiene más listas en el Listbox, por eso te muestra "colección" y no te muestra los números, porque le estás pasando una serie de colecciones genéricas... no le estás pasando diréctamente los números, debes pasarle un String o una colección de Strings al método Add o AddRange del ListBox, ahi es donde fallas siempre, jolín  . La función del código de arriba ( JoinEnumerables ) simplemente lo que hace es UNIR cada List(Of Integer) de la Lista principal, en una única lista, y con el método String.Join() UNO los items de la lista para devolver un String... Slaudos.
|
|
|
En línea
|
|
|
|
luis456
Desconectado
Mensajes: 548
|
me explicas este error ? cada dia hay algo jejeje ,estoy probando este codigo y me dice: " El tipo 'LuisLibrary.Group' no está definido " Imports System.Text.RegularExpressions Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim values As New List(Of Integer) From { 2, 8, 9, 10, 11, 15, 21, 22, 28, 50, 55, 58 } Dim groupedValues As List(Of Group) = (From i As Integer In values Group By i.ToString("00").First Into items = Group Select New LuisLibrary.Group With { .First = items(0), .Second = items(1) }).ToList For Each g As LuisLibrary.Group In groupedValues Dim str As String = String.Format("{0:00}, {1:00}", g.First, g.Second) MessageBox.Show(str) Next g End Sub End Class
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.697
|
" El tipo 'LuisLibrary.Group' no está definido " Es demasiado obvio, no se puede encontrar ningún miembro que se llame ' Group' en el código, al no estar creado o no tener la visibilidad suficiente para poder acceder a él. En el código que muestras falta la parte más importante, el NameSpace o Class ' LuisLibrary' y el miembro de Class ' Group', si no los creas entonces no existen... no necesitas crearlos desde cero, en el primer ejemplo que te mostré ya lo hice yo, añádelo a tu código. Saludos.
|
|
|
En línea
|
|
|
|
luis456
Desconectado
Mensajes: 548
|
Me voy a suicidar  Un valor de tipo 'System.Collections.Generic.List(Of WindowsApplication1.LuisLibrary.Group)' no se puede convertir en 'System.Collections.Generic.List(Of System.Text.RegularExpressions.Group)'. Un valor de tipo 'System.Text.RegularExpressions.Group' no se puede convertir en 'WindowsApplication1.LuisLibrary.Group'. Imports System.Text.RegularExpressions Namespace LuisLibrary Friend NotInheritable Class Group Protected Friend Property First As Integer = 0I Protected Friend Property Second As Integer = 0I End Class End Namespace Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim values As New List(Of Integer) From { 2, 8, 9, 10, 11, 15, 21, 22, 28, 50, 55, 58 } Dim groupedValues As List(Of Group) = (From i As Integer In values Group By i.ToString("00").First Into items = Group Select New LuisLibrary.Group With { .First = items(0), .Second = items(1) }).ToList For Each g As LuisLibrary.Group In groupedValues Dim str As String = String.Format("{0:00}, {1:00}", g.First, g.Second) MessageBox.Show(str) Next g End Sub End Class
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.697
|
Un valor de tipo 'System.Collections.Generic.List(Of WindowsApplication1.LuisLibrary.Group)' no se puede convertir en 'System.Collections.Generic.List(Of System.Text.RegularExpressions.Group)'.
Un valor de tipo 'System.Text.RegularExpressions.Group' no se puede convertir en 'WindowsApplication1.LuisLibrary.Group'. Se debe a que el nombre 'Group' es ambiguo, 'Group' existe tanto en el NameSpace 'RegularExpressions' como en el Namespace 'LuisLibrary' así que se produce un conflicto en la manera en que lo intentas usar, tu has importado directamente en el código el namespace 'RegularExpressions' así que al escribir 'Group' se toma como referencia lo que has importado... 'RegularExpressions.Group'. ¿Solución?, especifica el nombre del Namespace ( 'LuisLibrary.Group' ) en lugar de escribir solo 'Group', o modifica el nombre de la Class 'Group' por otro más apropiado como podría ser 'Int32Group' y luego importa el namespace 'LuisLibrary'. Reemplaza: Dim groupedValues As List(Of Group) =...
Por: Dim groupedValues As List(Of LuisLibrary.Group) =...
EDITO:1) Por cierto, no quiero ver marranadas, ya me estás separando 'Luislibrary' de la Class 'Form1', crea un archivo de Class individual en el projecto y ahí copias y pegas el namespace 'LuisLibrary' y vas añadiendo tus distintas "utilidades" para usarlas en el futuro. 2) En el código que muestras no necesitas usar expresiones regulares, al menos en el código que has mostrado, si no estás seguro de porque importaste 'RegularExpressions' entonces elimina ese Import. Saludos.
|
|
« Última modificación: 24 Octubre 2014, 15:33 pm por Eleкtro »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Problema] Programa para averiguar números pares entre 2 números
Programación Visual Basic
|
Dreamaker
|
3
|
5,465
|
21 Mayo 2010, 23:45 pm
por Shell Root
|
|
|
Combinaciones con 54 numeros
.NET (C#, VB.NET, ASP)
|
mr_marley
|
3
|
8,956
|
27 Noviembre 2011, 01:56 am
por mr_marley
|
|
|
Como saber todas las combinaciones posibles de letras y numeros?
Programación C/C++
|
peterfly
|
8
|
28,391
|
15 Julio 2012, 18:26 pm
por DickGumshoe
|
|
|
Combinaciones letras o numeros
« 1 2 »
.NET (C#, VB.NET, ASP)
|
luis456
|
11
|
8,067
|
8 Febrero 2014, 11:43 am
por luis456
|
|
|
Combinaciones numericas por posicion con numeros guias
« 1 2 3 »
.NET (C#, VB.NET, ASP)
|
luis456
|
26
|
18,204
|
28 Septiembre 2014, 16:13 pm
por luis456
|
|