Me gustaría que aprendieses a resolver fallos básicos cómo este, que te suceden por que vas toqueteando cosas ...cambiando puntos, comas, etc, a ver si alguno de esos cambios cuela y te funciona, pero así no se programa Luis, así no.
Lo primero de todo que quiero que hagas es que vayas a las opciones de VisualStudio y actives estas opciones tal y cómo yo las tengo:
Eso te servirá para cojer buenos hábitos de programación.
A ver si aprendes a depurar con breakpoints o al menos a solucionar estos problemas básicos por ti mismo.
Mi habilidad para explicar no es que sea muy buena y tampoco voy a entrar en detalles avanzados de depuración, solo intentaré explicarte cómo solucionar los problemas del código que mostraste de un modo para que lo entiendas, si acabas teniendo dudas, pregunta.
Primer problema:
Tienes no se cuantas colecciones o arrays cómo estos:
Este objeto lo intentas asignar cómo una lista de enteros, pero no te lo permite:
A simple vista se aprecia que algo falla por que la sintaxis sale resaltada y al intentar compilar salen varios errores de compilación:
El primer error ya lo veremos luego,
si te fijas, el último error está repetido (y solo te saldrá ese error si activaste las opciones que te dije), eso nos indica que las variables col1, col2 y col3 se están tratando por separado, a la conclusión que deberías llegar con eso es que no estás asignando o "agrupando" correctamente las variables.
Fíjate aquí cómo lo asignas:
Pero fíjate bien:
¿Que falta entonces aquí?
Los brackets!
Bien, al ponerlos, el error que se repetía desaparece, pero nos queda este error:
Un array de un array de enteros no se puede convertir a una lista de enteros, hmmm... ¿por qué pasa esto?.
Por que aunque hayamos solventado el error que se repetía, los brackets {} indican la asignación de un array, y además, dentro de ese array he colocado 3 arrays más (col1, col2 y col3),
así que tenemos un array de arrays de enteros intentando asignarlo a una lista de enteros, ¿qué harias?, corregir la declaración:
De lista de enteros:
A lista de array de enteros:
Este error desaparece finálmente:
Pero ahora aparece un nuevo error:
No se puede convertir un array de array de enteros a una lista de array de enteros, claro, son dos tipos parcialmente distintos... entonces debes buscar la forma de convertir una colección (enumerable) a una lista, que también lo sabes hacer de sobra, con la función ToList:
Y si no recordases cómo se hace, solo tienes que buscar en Google:
http://lmgtfy.com/?q=.net+ienumerable+to+list
O investigar un poco en la documentación oficial de MSDN para encontrar la manera:
https://msdn.microsoft.com/en-us/library/vstudio/system.linq.enumerable_methods%28v=vs.100%29.aspx
Entonces, le añadimos esa función:
Listo, el error ha desaparecido, primer problema solucionado.
En resumen, solo habia que corregir la declaración del objeto "Lnumbers" y convertir el array al type "List", facil, ¿no?.
Segundo problema:
Creo que en el fondo sabes de sobra cómo solucionar esto, pero de todas formas lo analizaré:
Tenemos este código:
Al intentar compilar, sale este error:
No se puede convertir un array de enteros al tipo Listbox, el error se explica por si mismo.
Solo necesitas fijarte en cómo has declarado el objeto Lnumbers:
Ahí no hay ningún ListBox, es una lista de array de enteros.
Si pretendes iterar una lista de array de enteros entonces deberás declarar la variable de iteración del For como tal, ¿no?, cómo un array de enteros:
Listo, segundo problema solucionado.
El código que mostraste (bueno, una adaptación del código para poder correrlo):
El código con las correcciones aplicadas que he ido explicando:
El resultado de la ejecución:
Y el código para hacerlo con IEnumerables:
Código
Dim col1 As IEnumerable(Of Integer) = {1, 2, 3} Dim col2 As IEnumerable(Of Integer) = {4, 5, 6} Dim col3 As IEnumerable(Of Integer) = {7, 8, 9} Private Sub Test() Dim Lnumbers As List(Of IEnumerable(Of Integer)) = {col1, col2, col3}.ToList For Each col As IEnumerable(Of Integer) In Lnumbers ListBox1.Items.Add(String.Join(" "c, col)) Next col End Sub
Espero que de verdad esto haya servido para que puedas mejorar en algún aspecto... ya se que tampoco he explicado mucho y han sido cosas muy básicas, pero creo que de algo servirá.
Saludos!