none
Ordenar datos almacenados en un list RRS feed

  • Pregunta

  • Saludo estimado señores

    No soy programador. Aunque intento hacer una herramienta(rutina), para ayudarme en mi trabajo. Es una rutina (dll)creado con Vb.net para usar en Autocad.

    Lo que deseo lograr es manejar los datos que ya obtuve de autocad. Deseo manipular estos datos para hacer unos calculos y luego enviar la información de nuevo a autocad

    El lenguaje es vb.net. No uso base de datos

    En este momento he tomado los siguientes datos de un dibujo de autocad. 1-Numero de valvula 2- caudal 3- area 4 diametro 5 color 6 hatch

    A continuación el código

    'En este punto cargo los datos. Esto esta dentro de un For each

                                           

     productList = New List(Of Valvula)

                                productList.Add(New Valvula With {.ValvulaID = numeroval, .Vcaudal = qval, .Varea = aval, .Vdiametro = dval,                            .Vcolor = colorhatch, .Vhatch = vhatchn})

                                Dim num5 As Valvula
    'En este punto mediante mensajes compruebo que se leen los datos 
                                For Each num5 In productList
                                    MsgBox("Valv N°= " & num5.ValvulaID & " /Caudal= " & num5.Vcaudal & " /Area= " & num5.Varea & "                                                   /Diam= " & num5.Vdiametro & " /Color= " & num5.Vcolor & " /Hatch= " & num5.Vhatch)
                                Next
    'Hasta este punto todo esta perfecto. Luego lo que deseo es ORDENAR los datos. por numero de valvula(ValvulaID). Pero el 'siguiente código no me funciona. Solamente me muestra el ultimo valor. Pero no me muestra todos los valores ordenados.
                               

                              Dim sortedProducts = From prod In productList
                                                     Order By prod.ValvulaID
                                Dim SortValid As Valvula
                                For Each SortValid In sortedProducts
                                     MsgBox("Valv N°= " & SortValid.ValvulaID)
                                Next

                   'Bendicones y gracias       


    domingo, 5 de junio de 2016 3:36

Respuestas

  • Jose Costa Rica,

    Puedes recorrer la lista ordenada:

    Private Sub btnOrdenarLista_Click(sender As Object, e As EventArgs)
    	Dim valvulas As New List(Of Valvula)()
    
    	valvulas.Add(New Valvula() With { _
    		Key .ValvulaID = 5, _
    		Key .Vcolor = "Verde" _
    	})
    	valvulas.Add(New Valvula() With { _
    		Key .ValvulaID = 3, _
    		Key .Vcolor = "Rojo" _
    	})
    	valvulas.Add(New Valvula() With { _
    		Key .ValvulaID = 10, _
    		Key .Vcolor = "Azul" _
    	})
    
    	For Each valvula As Valvula In valvulas.OrderBy(Function(v) v.ValvulaID)
    		MessageBox.Show(String.Format("{0} - {1}", valvula.ValvulaID, valvula.Vcolor))
    	Next
    End Sub



    domingo, 5 de junio de 2016 3:58