LINQ, VB2008 y array de clases - Jorge Serrano - MVP Visual Developer - Visual Basic

LINQ, VB2008 y array de clases

LINQ to Object (L2Objects) 

Anteriormente, pudimos ver como desarrollar nuestro primer ejemplo de LINQ con Visual Basic 2008 de la mano de Visual Studio 2008 (Empezando con LINQ y VB 2008).

En esta ocasión, vamos a utilizar una clase y a atacar a los miembros de la clase utilizando LINQ.

Reaprovechando el ejemplo que hicimos en el primer ejemplo que anteriormente comentaba o bien creando una aplicación de ejemplo completamente nueva, vamos a insertar en nuestro formulario Windows un nuevo control de tipo Button. 

Para esta ocasión, vamos a crear una clase que por ejemplo tendría la composición de los campos de una la tabla (Persona).

Esta tabla tendrá 3 campos muy sencillos: DNI (de tipo Integer), Nombre (de tipo String) y Edad (de tipo Byte).

La clase PersonaTable contendrá los campos de la tabla Persona y quedará de la siguiente forma:

' Clase que representa la tabla Persona y sus campos
Public Class PersonaTable
   
Public DNI As Integer
   Public Nombre As String
   Public Edad As Byte
End
 Class

Una vez hecho esto, vamos a hacer doble clic sobre el control Button que hemos insertado y vamos a escribir el siguiente código de nuestra aplicación:

Public Class MainForm

   
Private Sub btnSecondTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSecondTest.Click
      
' Creamos una matriz de clases con los datos inicializados de cada clase
      Dim listaAuxiliar1() = {New PersonaTable With {.DNI = 1000, .Nombre = "Juan", .Edad = 23}, _
New PersonaTable With {.DNI = 1001, .Nombre = "Mar, .Edad = 24}}

      ' Declaramos una variable para obtener de la matriz de meses del a
      ' los meses que cumplen la condiciSql programada
      Dim empleadosSeleccionados = From seleccion In listaAuxiliar1 Where seleccion.Nombre Like "J*" Select seleccion.DNI

      ' Declaramos una variable para obtener el resultado
      Dim resultadoObtenido As String = ""

      ' Recorremos los resultados de la condiciSql
      For Each seleccion In empleadosSeleccionados
         resultadoObtenido &= seleccion & vbCrLf
      
Next

      ' Mostramos el resultado final
      MessageBox.Show(resultadoObtenido)
   
End Sub

End
 Class

El resultado de ejecutar esta instrucción es 1000, ya que en la búsqueda de datos, estamos buscando el DNI que cumple que la primera letra del campo Nombre empieza por la letra J.

No obstante, en este ejemplo, hemos inicializado la matriz listaAuxiliar1 con datos de forma directa.

Si quisiéramos hacerlo clase a clase, lo podríamos hacer de esta otra forma:

Public Class MainForm

   
Private Sub btnSecondTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSecondTest.Click
      
' Creamos una lista de objetos de tipo PersonaTable
      Dim listaAuxiliar2 = New List(Of PersonaTable)

      ' Definimos una clase PersonaTable
      Dim empleado1 As New PersonaTable
      
' Damos valores a sus miembros
      empleado1.DNI = 1000
      empleado1.Nombre = 
"Juan"
      empleado1.Edad = 23
      
' Ala clase a la lista de tipo PersonaTable
      listaAuxiliar2.Add(empleado1)

      ' Definimos otra clase PersonaTable diferente
      Dim empleado2 As New PersonaTable
      
' Damos valores a sus miembros
      empleado2.DNI = 1001
      empleado2.Nombre = 
"Mar
      empleado2.Edad = 24
      
' Ala clase a la lista de tipo PersonaTable
      listaAuxiliar2.Add(empleado2)

      ' Declaramos una variable para obtener de la matriz de meses del a
      ' los meses que cumplen la condiciSql programada
      Dim empleadosSeleccionados = From seleccion In listaAuxiliar2 Where seleccion.Nombre Like "J*" Select seleccion.DNI

      ' Declaramos una variable para obtener el resultado
      Dim resultadoObtenido As String = ""

      ' Recorremos los resultados de la condiciSql
      For Each seleccion In empleadosSeleccionados
         resultadoObtenido &= seleccion & vbCrLf
      
Next

      ' Mostramos el resultado final
      MessageBox.Show(resultadoObtenido)
   
End Sub

End
 Class

Evidentemente, en este segundo caso, el resultado es el mismo, el DNI con valor 1000.

Sirva este segundo ejemplo, como demostración muy liviana del poder y el uso de LINQ.

En este caso, lo que se dice es... ¡la imaginación al poder!.

Published 12/12/2007 19:00 por Jorge Serrano

Comentarios

Thursday, December 13, 2007 6:16 PM por Jorge Serrano

# re: LINQ, VB2008 y array de clases

Hola espinete,

me alegro mucho de que comentes esto.

Tengo un ejemplo más preparado sobre LINQ to XML y por supuesto quiero tocar LINQ to SQL y más... (de forma básica), pero también tengo planeado meterme a futuro con los temas de rendimiento que considero muy interesantes e importantes.

Espero poder hacerlos en las próximas semanas/meses.

Un saludo y gracias por aportar. :-)

Wednesday, January 16, 2008 9:03 PM por El blog de Jorge

# LINQ, Visual Basic 2008 y DataSet

LINQ to DataSet (L2DataSet) Resumen general de lo publicado sobre LINQ hasta el momento: Información

Friday, January 25, 2008 7:32 AM por El blog de Jorge

# LINQ to Entities y Visual Basic 2008 - Parte 1

LINQ to Entities (L2E) Resumen general de lo publicado sobre LINQ hasta el momento: Información general

Friday, January 25, 2008 9:05 AM por El blog de Jorge

# LINQ to Entities y Visual Basic 2008 - Parte 1

LINQ to Entities (L2E) Resumen general de lo publicado sobre LINQ hasta el momento: Información general

Monday, October 19, 2009 9:36 PM por jorge

# re: LINQ, VB2008 y array de clases

muxas grax

Deja tu comentario

(requerido) 
(requerido) 
(opcional)
(requerido)