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!.
5 Responsesso far
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. 🙂
LINQ to DataSet (L2DataSet) Resumen general de lo publicado sobre LINQ hasta el momento: Información
LINQ to Entities (L2E) Resumen general de lo publicado sobre LINQ hasta el momento: Información general
LINQ to Entities (L2E) Resumen general de lo publicado sobre LINQ hasta el momento: Información general
muxas grax