Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - luis456

#211
Cita de: Eleкtro en 13 Marzo 2015, 14:53 PM
Pero lo complicas demasiado, en realidad no tiene más misterio que utilizar la clausula 'Order By' ( o la extensión '.OrderBy' ) cómo te sugerí al principio.

Así:
Código (vbnet) [Seleccionar]
Dim selecctedValues23aa As IEnumerable(Of Integer) =
   From value As Integer In Result22aa55e
   Take 11
   Order By value Ascending


O así:
Código (vbnet) [Seleccionar]
Dim selecctedValues23aa As IEnumerable(Of Integer) =
   Result22aa55e.
   Take(11).
   OrderBy(Function(value As Integer)
              Return value
           End Function)


Saludos


Hola
Lo puse a si al principio y me dio error no me acuerdo bien pero algo como " la funcion no devuelve xxxx " no me acuerdo mas y si tuve que modificar algo ya que no me contaba " take"  y lo resolvi de esta forma y ahora va de perlas :)

Código (vbnet) [Seleccionar]
Dim liste As List(Of Integer) = selecctedValues23aa.Take(11).ToList
        liste.Sort()


Luis







#212
Listo ya funciona tarde unos dias porque estaba en otras cosas tenias razón Elektro fue fácil
ya me estoy metiendo de lleno en linq: hasta me parece facil jejejej

Código (vbnet) [Seleccionar]
Dim Re As New Random
        Dim Result22aa55e As IEnumerable(Of Integer) =
              (
                  (Result1.Concat(Result2).Concat(Result3).
            Distinct.
            Select(Function(Value As Integer)
                       Return If(Value < MAX, Value, Rand.Next(25, MAX))
                   End Function))
         )
        Dim selecctedValues23aa As IEnumerable(Of Integer) = Result22aa55e.Take(11)
        Dim liste As List(Of Integer) = selecctedValues23aa.ToList
        liste.Sort()
        ListBox3.Items.AddRange(liste.Cast(Of Object).ToArray) 


Hasta la siguiente pregunta :)

Luis


#213
Cita de: Eleкtro en 11 Marzo 2015, 14:44 PM
Si, fíjate bien:
Lo suyo es que entiendas esa "cosa" a la que te estás refiriendo, o al menos su utilización.

Saludos

Jejeje pues npi por ahora y te cuento tendría que hacerlo 20 veces que son las rutinas que tengo en el codigo la que puse arriba, pensaba que con una cosa corta lo podria arreglar jejje

Luis
#214
Cita de: Eleкtro en 11 Marzo 2015, 14:29 PM
Utilizando las extensiones LINQ:
IEnumerable.OrderBy

(Lee el ejemplo en Vb.Net que hay en esa misma página)

Saludos!

Te refieres a esta cosa :)

Código (vbnet) [Seleccionar]
Structure Pet
        Public Name As String
        Public Age As Integer
    End Structure

    Sub OrderByEx1()
        ' Create an array of Pet objects.
        Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8}, _
                             New Pet With {.Name = "Boots", .Age = 4}, _
                             New Pet With {.Name = "Whiskers", .Age = 1}}

        ' Order the Pet objects by their Age property.
        Dim query As IEnumerable(Of Pet) = _
            pets.OrderBy(Function(pet) pet.Age)

        Dim output As New System.Text.StringBuilder
        For Each pt As Pet In query
            output.AppendLine(pt.Name & " - " & pt.Age)
        Next

        ' Display the output.
        MsgBox(output.ToString())
    End Sub

    ' This code produces the following output:
    '
    ' Whiskers - 1
    ' Boots - 4
    ' Barley - 8


luis



#215
He probado y reprobado ordenar la salida en este codigo de menor a mayor y siempre me da error en ejecucion probando todas las variables y probando en diseño del listbox en false o true y me sigue fallando.

Código (vbnet) [Seleccionar]
Dim Re As New Random
Dim Result22aa55e As IEnumerable(Of Integer) =
             (
                 (Result1.Concat(Result2).Concat(Result3).
           Distinct.
           Select(Function(Value As Integer)
                      Return If(Value < MAX, Value, Rand.Next(0, MAX))
                  End Function))
        )

       Dim selecctedValues23aa As IEnumerable(Of Integer) = Result22aa55e.Take(11)

       '  Array.Sort(selecctedValues23aa)
       ' ListBox3.Sorted = True
       
     Me.ListBox3.Items.AddRange(selecctedValues23aa.Cast(Of Object).ToArray)  


el code funciona bien pero me muestra los numeros desordenados

Luis

#216
Cita de: Eleкtro en  8 Marzo 2015, 15:55 PM
ahá, ¿y que relacion hay entre el patrón que sigue "a", y el que sigue "b"?.

Ninguno  puse eso sin tomar en cuenta que era correlativo jejje se supone que es a+c y como son muchos numeros que da la funcion son muchas las variables y lo puse corto
y seria como esto

A + C
A + D
B + C
B + D 
C + D

o mas cuando lo termine (no pongo todos ) :)


1   .-   (   A   +   C   +   D   )
2   .-   (   A   +   B   +   D   )
3   .-   (   A   +   B   +   E   )
4   .-   (   A   +   B   +   F   )
5   .-   (   A   +   B   +   G   )
6   .-   (   A   +   B   +   H   )
7   .-   (   A   +   C   +   D   )
8   .-   (   A   +   C   +   E   )
9   .-   (   A   +   C   +   F   )
10   .-   (   A   +   C   +   G   )
11   .-   (   A   +   C   +   H   )
12   .-   (   A   +   D   +   E   )
13   .-   (   A   +   D   +   F   )
14   .-   (   A   +   D   +   G   )
15   .-   (   A   +   D   +   H   )
16   .-   (   A   +   E   +   F   )
17   .-   (   A   +   E   +   G   )
18   .-   (   A   +   E   +   H   )
19   .-   (   A   +   F   +   G   )
20   .-   (   A   +   F   +   H   )
21   .-   (   A   +   G   +   H   )
22   .-   (   B   +   C   +   D   )
23   .-   (   B   +   C   +   E   )
24   .-   (   B   +   C   +   F   )
25   .-   (   B   +   C   +   G   )
26   .-   (   B   +   C   +   H   )
27   .-   (   B   +   D   +   E   )
28   .-   (   B   +   D   +   F   )
29   .-   (   B   +   D   +   G   )
30   .-   (   B   +   D   +   H   )
31   .-   (   B   +   E   +   F   )
32   .-   (   B   +   E   +   G   )
33   .-   (   B   +   E   +   H   )
34   .-   (   B   +   F   +   G   )
35   .-   (   B   +   F   +   H   )
36   .-   (   B   +   G   +   H   )
37   .-   (   C   +   D   +   E   )
38   .-   (   C   +   D   +   F   )
39   .-   (   C   +   D   +   G   )
40   .-   (   C   +   D   +   H   )
41   .-   (   C   +   E   +   F   )
42   .-   (   C   +   E   +   G   )
43   .-   (   C   +   E   +   H   )
44   .-   (   C   +   F   +   G   )
45   .-   (   C   +   F   +   H   )
46   .-   (   C   +   G   +   H   )
47   .-   (   D   +   E   +   F   )
48   .-   (   D   +   E   +   G   )
49   .-   (   D   +   E   +   H   )
50   .-   (   D   +   F   +   G   )
51   .-   (   D   +   F   +   H   )
52   .-   (   D   +   G   +   H   )
53   .-   (   E   +   F   +   G   )
54   .-   (   E   +   F   +   H   )
55   .-   (   E   +   G   +   H   )
56   .-   (   F   +   G   +   H   )
etec etec etec



Luis

#217
Jo cada ves me vuelvo mas loco , te paso lo que estoy tratando de hacer de una forma que me sea mas facil

Código (vbnet) [Seleccionar]
   Dim numbers() As Integer = {0, 1, 2, 3, 4, 5, 6, 10, 15, 20, 25, 30, 35, 45} <---estos numeros cambian o son mas o son menos cantidad


quiero poner esos numeros en estas variables ??
a= 1 2 3 4
b= 3 5 10 15
c= 20 25 30 35


Dim Result As IEnumerable(Of Integer) =
            (a.Concat(b.Concat(c))).          <---------------para concatenar a +b c+a etc cada ves que quiera
            Distinct.
           


ListBox4.Items.AddRange(Resul.Cast(Of Object).ToArray)


Gracias
Luis
#218
Cita de: Eleкtro en  8 Marzo 2015, 10:35 AM
Tienes la colección estática y principal, con nombre 'mainCol'.

Código (vbnet) [Seleccionar]
       ' La colección principal.
       Dim mainCol As IEnumerable(Of Integer) =
           {
               1, 2, 3, 4,
               5, 6, 10, 15,
               20, 22, 24, 25,
               30, 35, 45, 47,
               50, 54, 57, 58,
               60, 67, 68, 69,
               70, 71, 75, 77,
               79, 80
           }


Tienes la colección principal, dividida en una colección que contiene colecciones de 4 elementos (total: 8 sub-colecciones), con nombre 'splittedCols'.

Código (vbnet) [Seleccionar]
       ' La colección principal, dividida en una colección que contiene colecciones de 4 elementos (total: 8 colecciones).
       Dim parts As Integer = 4
       Dim splittedCols As IEnumerable(Of IEnumerable(Of Integer)) =
           From index As Integer In Enumerable.Range(0, CInt(Math.Ceiling(mainCol.Count() / parts)))
           Select mainCol.Skip(index * parts).Take(parts)


Y ahora, ¿que estás intentando hacer, unirla de nuevo?.

(Esto sería una forma rebuscada y poco optimizada, no se me ocurre nada mejor ahora mismo usando LINQ, pero puedes optimizarlo usando un FOR corriente de toda la vida, no ForEach)
Código (vbnet) [Seleccionar]
       ' Las 8 colecciones de 4 elementos cada una, unidas en una sola colección:
       Dim joinedCol As IEnumerable(Of Integer) = {}
       splittedCols.ToList.ForEach(Sub(col As IEnumerable(Of Integer))
                                       joinedCol = joinedCol.Concat(col)
                                   End Sub)


Código (vbnet) [Seleccionar]
ListBox1.Items.AddRange(joinedCol.Cast(Of Object)().ToArray)

PD: Intenta ser específico.

Saludos!


Funciona bien pero :

Pregunta  " Y ahora, ¿que estás intentando hacer, unirla de nuevo? " NO  jejej si todavía no he logrado hacer lo que en principio quería hacer, que era dividir la colección principal en variables con cuatro números  cada una para yo después con cada variable con los números asignados poder concatenar las que yo quiera entre ellas y mostrar ese resultado en un listbox

variable principal con números

Código (vbnet) [Seleccionar]
Dim mainCol As IEnumerable(Of Integer) =
            {
                1, 2, 3, 4,
                5, 6, 10, 15,
                20, 22, 24, 25,
                30, 35, 45, 47,
                50, 54, 57, 58,
                60, 67, 68, 69,
                70, 71, 75, 77,
                79, 80
            }




cada cuatro números se la asignamos a una variable


variable1 =1 2 3 4
variable2 = 5 6 10 15
variable3 = 20 22 24 24
etec etec


mostrar variable1  en  listbox1
mostrar variable2  en listbox2

Gracias  Elektro por tu ayuda y como me pediste mas especifico jejej



Luis
















#219
A ver que estoy mal ? he probado y reprobado y no me sale

Código (vbnet) [Seleccionar]
'  Dim collection As IEnumerable(Of Integer) = Enumerable.Range(1, 11)
        Dim collection() As Integer = {1, 2, 3, 4, 5, 6, 10, 15, 20, 22, 24, 25, 30, 35, 45, 47, 50, 54, 57, 58, 60, 67, 68, 69, 70, 71, 75, 77, 79, 80}

        Dim parts As Integer = 4


        Dim result As IEnumerable(Of IEnumerable(Of Integer)) =
    From index As Integer
    In Enumerable.Range(0, CInt(Math.Ceiling(collection.Count() / parts)))
    Select collection.Skip(index * parts).Take(parts)

        Dim dinosaurs As New List(Of Integer)(parts)

        ListBox5.Items.AddRange(dinosaurs.Cast(Of Object).ToArray)



Luis
#220
Cita de: Eleкtro en  5 Marzo 2015, 13:03 PM
Ese error ya lo sufriste anteriormente por la mimsa causa y te expliqué el motivo.

Primero de nada, en el código que he citado, al método ListBox.Items.AddRange() le estás pasando la variable 'parts' que solo es un simple valor Integer, así que voy a hacer cómo que no he leido eso y vamos a suponer que al método le pasas la variable 'result', que es en realidad lo que le querrías intentar pasar, quedando así:
Código (vbnet) [Seleccionar]
ListBox1.Items.AddRange(result.Cast(Of Object).ToArray)

El método ListBox.Items.AddRange() espera que le pases como parámetro un array de objetos (una colección de strings por ejemplo, IEnumerable(Of String).Cast(Of Object).ToArray, o un array, New Object() {1,2,3}).

Pero 'result' es una colección que contiene sub-colecciones ( IEnumerable(Of IEnumerable(Of T)) ), no es un tipo de valor que vayas a poder visualizar en el listbox, por que tienes que pasarle un array que contenga los elementos que quieras mostrar (los valores Integer), no pasarle un array que contenga más arrays.

piensa, ¿qué debes hacer?, ¿debo volver a decírte lo que siempre te digo qué debes usar para resolver la mayoría de los problemas que tienes? (eso ha sido una pista), jeje.

Saludos!


Bueno dejando lo otro vuelvo al problema inicial por mas que miro Linq en  msdn.microsoft.com no logro controlar esto lo unico que he podido hacer es mostrar los numeros jejej y revizando los codigos de elektro lo que consegui fue el ejemplo pero era para combinar

codigo

Código (vbnet) [Seleccionar]
Dim collection As IEnumerable(Of Integer) = Enumerable.Range(1, 99)

        Dim parts As Integer = 4


        Dim result As IEnumerable(Of IEnumerable(Of Integer)) =
    From index As Integer
    In Enumerable.Range(0, CInt(Math.Ceiling(collection.Count() / parts)))
    Select collection.Skip(index * parts).Take(parts)

        ListBox5.Items.Add(String.Join(", ", From index As Integer In collection
                                                                      Select If(index.ToString.Length = 1I,
                                                                                index.ToString.Insert(0I, "0"c),
                                                                                index.ToString)))





Luis