Veremos como es de fácil con linq hacer estos procesos, ya que cuando se trabaja con arreglos o colecciones datos y nos toca ordenar los datos casi siempre recurrimos a los diferentes métodos de ordenación(burbuja) que existen pues bien como ya se los dije ahora veremos como hacerlo usando linq.
El ejercicio esta desarrollado en c# y vb.net con visual estudio 2010.
Este sera el diseño de nuestro ejercicio 2 botones y 2 listbox, en el ejercicio veremos como ordenar los datos de un arreglo y los datos de una lista tipo clase
Veamos el código, primeramente veremos la manera de ordenar los datos del arreglo en este caso uso un arreglo de 20 posiciones y es llenado con datos aleatorios.
int[] nums = new int[20]; Random rnd = new Random(); for (int i = 0; i < nums.Length; i++) { int alea = rnd.Next(0, 100); nums[i] = alea; lbxarreglo.Items.Add(alea); }
Dim nums As Integer() = New Integer(19) {} Dim rnd As New Random() For i = 0 To 19 Dim alea As Integer = rnd.Next(0, 100) nums(i) = alea lbxarreglo.Items.Add(alea) Next
Como pueden observar el código es sencillo creamos un arreglo de 20 posiciones y luego lo llenamos con datos aleatorios usando la clase random y los mostramos en el listbox.
Ahora veamos como ordenar los datos usando linq.
var arr = from n in nums orderby n ascending select n; foreach (var n in arr) { lbxarreglo.Items.Add(n); }
Dim arr = From n In nums Order By n Ascending Select n For Each n In arr lbxarreglo.Items.Add(n) Next
Como pueden notar en la primera linea se hace uso de linq para ordenar los datos del arreglo ascendentemente(de menor a mayor) también se puede ordenar descendentemente(de mayor a menor)la sintaxis es sencilla y comprensiva muy parecida al sql, luego de ordenar los datos hacemos uso de un foreach para recorrer los datos y mostrarlos en el listbox.
Ahora veamos como ordenar los datos de una lista tipo clase usando linq.
Lo primero sera crear una clase.
public class Personas { public string Nombre { get; set; } public string Apellido { get; set; } public int Edad { get; set; } public Personas(string nom, string ape, int edad) { Nombre = nom; Apellido = ape; Edad = edad; } }
Class Persona Public Nombre As String Public Apellido As String Public Edad As Integer Public Sub New(ByVal nom As String, ByVal ape As String, ByVal ed As Integer) Nombre = nom Apellido = ape Edad = ed End Sub End Class
Ahora creemos una lista tipo personas y agreguemos algunos datos desordenados.
List<personas> personas = new List<personas>(); personas.Add(new Personas("Cristian", "Torres", 20)); personas.Add(new Personas("Jose", "Alfaro", 18)); personas.Add(new Personas("Briseyda", "Flores", 12)); personas.Add(new Personas("Diana", "Turcios", 17)); personas.Add(new Personas("Fatima", "Ayala", 50)); personas.Add(new Personas("Miguel", "Fernadez", 40)); personas.Add(new Personas("Pedro", "Perez", 11)); personas.Add(new Personas("Nicole", "Garcia", 20)); foreach(Personas pers in personas) { lbxpersonas.Items.Add(pers); lbxpersonas.Items.Add(" "); }
Public personas As New List(Of Persona)() personas.Add(New Persona("Cristian", "Torres", 20)) personas.Add(New Persona("Jose", "Alfaro", 18)) personas.Add(New Persona("Briseyda", "Flores", 12)) personas.Add(New Persona("Diana", "Turcios", 17)) personas.Add(New Persona("Fatima", "Ayala", 50)) personas.Add(New Persona("Miguel", "Fernadez", 40)) personas.Add(New Persona("Pedro", "Perez", 11)) personas.Add(New Persona("Nicole", "Garcia", 20)) For Each pers In personas lbxpersonas.Items.Add(pers) lbxpersonas.Items.Add(" ") Next
Ahora veamos como ordenar los registros por medio de la edad.
var lis = from l in personas orderby l.Edad descending select l; foreach(var pers in lis) { lbxpersonas.Items.Add(pers); lbxpersonas.Items.Add(" "); }
Dim lis = From l In personas Order By l.Edad Descending Select l For Each pers In lis bxpersonas.Items.Add(pers) lbxpersonas.Items.Add(" ") Next
Nuevamente primero se ordenan los datos por medio de la edad y esta vez los ordenamos de forma descendente usando linq, y luego se hace uso de foreach para recorrer los datos y mostrarlos en el listbox.
Como pueden notar ordenar datos usando linq es muy fácil y se consigue con poco código, ya no necesitamos recurrir a ningún método de ordenación ya que con linq lo puedes hacer fácil y rápido.
Eso es todo por ahora espero les sirva de algo hasta pronto y como siempre les dejo los proyectos para descargar.
Descargar Proyecto C#
Descargar Proyecto VB.Net
Si quieren donarme para una soda lo pueden hacer aqui.
0 Comentarios