Mostrando las entradas con la etiqueta lynq. Mostrar todas las entradas
Mostrando las entradas con la etiqueta lynq. Mostrar todas las entradas

lunes, 12 de noviembre de 2018

146. Lynq transformar objetos

Lynq nos permite manipular datos de una manera ágil y sencilla, en este ejemplo lo que vamos a aprender es como copiar datos entre 2 objetos que tienen una estructura diferente.

El select que estamos haciendo desde lynq lo que nos permite es crear un nuevo objeto (el objeto se crea al efectuar el select) y se asigna a un nuevo objeto, de esta manera se deja que el compilador se encargue de establecer la mejor opción para la copia entre objetos, evitando establecer una lógica de forma manual.

Veamos el ejemplo

namespace CopiarDatos
{
 
    public class Primaria
    {
        public string Nombre { getset; }
        public string sexo { getset; }
        public int Numero { getset; }
        public Boolean paso { getset; }
    }
 
    public class Secundaria
    {
        public string Nombre { getset; }
        public string sexo { getset; }
        public int grupo { getset; }
        public int ubicacion { getset; }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            List<Primaria> primaria = new List<Primaria>();
            primaria.Add(new Primaria() { Nombre = "Juan Perez"
                             Numero = 15, sexo = "H",paso=true });
            primaria.Add(new Primaria() { Nombre = "Raquel Perez"
                             Numero = 17, sexo = "H", paso = true });
            primaria.Add(new Primaria() { Nombre = "Alejandra Perez"
                             Numero = 165, sexo = "H", paso = false });
            primaria.Add(new Primaria() { Nombre = "Miguel Perez"
                             Numero = 145, sexo = "H", paso = true });
            primaria.Add(new Primaria() { Nombre = "Raciel Perez"
                             Numero = 155, sexo = "M", paso = false });
            primaria.Add(new Primaria() { Nombre = "Juana Perez"
                             Numero = 415, sexo = "M", paso = false });
            primaria.Add(new Primaria() { Nombre = "Leonardo Perez"
                             Numero = 135, sexo = "M", paso = false });
            primaria.Add(new Primaria() { Nombre = "Miguel Perez"
                             Numero = 135, sexo = "M", paso = false });
            primaria.Add(new Primaria() { Nombre = "Angel Perez"
                             Numero = 135, sexo = "M", paso = false });
            primaria.Add(new Primaria() { Nombre = "Rafael Perez"
                             Numero = 115, sexo = "M", paso = false });
 
            List<Secundaria> x = (from a in primaria 
                 where a.paso == false select new Secundaria { 
                              Nombre = a.Nombre, sexo = a.sexo }).ToList();
 
            foreach(Secundaria objloop in x)
            {
                Console.WriteLine(objloop.Nombre + " - " + 
                                  objloop.grupo + " - " + 
                                  objloop.sexo + " - " + 
                                  objloop.ubicacion);                
            }
            Console.ReadLine();
        }
    }
}

¿Cual es la magia?

 List<Secundaria> x = (from a in primaria where a.paso == false 
       select new Secundaria { Nombre = a.Nombre, sexo = a.sexo }).ToList();

Esta linea es la magia, al momento de generar el select, indicamos que se cree un nuevo objeto y la asignación que tendrá de los valores


 select new Secundaria { Nombre = a.Nombre, sexo = a.sexo }).ToList();

Así llenamos los objetos de una manera eficiente, tanto para el compilador como para el programador.


Felices Lineas


martes, 23 de octubre de 2018

141. Lynq II

Vamos a seguir aprendiendo un poco de lynq, si ya se que tengo varias cosas abiertas pero también eso tiene su razón de ser, la de generar curiosidad, la programación se mueve por curiosidad.

En SQL nosotros podemos tomar un conjunto de registros, esto lo hacemos para reducir nuestro universo o por que nos interesa solo una parte de ellos, en sql usamos el argumento top, asi desde sql podemos seleccionar un conjunto de datos con una instrucción como:

select top 10 from la tabla

pero que pasa en Lynq, podemos hacer esto, la respuesta es si, y de una forma muy sencilla

var lista = (from c in lstAlumno where c.Edad > 15 select c).Take(1);

y si ademas quisieramos meter un orden

var lista = (from c in lstAlumno where c.Edad > 15 select c).OrderBy(c=>c.Edad).Take(1);

Como pueden ver empesamos ha hacer una combinacion de lynq y lamda

Continuaremos el dia de mañana

Felices lineas



viernes, 26 de mayo de 2017

112. Lynq Group by con multiples columnas

Lynq es una herramienta muy poderosa ya que nos permite manejar y manipular datos de una manera muy sencilla, es importante que todo desarrollador de C# la maneje de la manera correcta, en esta ayuda rápida, vamos a mostrar como agrupar una lista con mas de una columna.

En este caso es de gran ayuda un método anónimo, con el crearemos la estructura que entenderá Groupby para poder efectuar la agrupación.

Detalle.GroupBy(s => new { s.Impuesto, s.Factor, s.Tasa });

considerando que detalle es un tipo de datos complejo en un generic.


Felices líneas