martes, 17 de enero de 2023

LinQ Sintaxis de Metodos C#


LinQ Sintaxis de Metodos 
=====================

1. int[] numeros = { 2, 3,  5, 6, 7, 8, 9, 10,12,14,15,16 };
Del arreglo muestre los números pares y que sean mayores  a 10.

Solucion:

List<int> consulta = numeros.Where(n => n % 2 == 0 && n>10).ToList();

foreach (int c in consulta)
     Console.WriteLine(c);  // 12 14 16

2. Se tiene una lista de objetos de tipo persona, crear la clase Persona con las siguientes          propiedades: Nombre, Edad, FechaIngresoEmpresa, Soltero.

List<Persona> personas = new List<Persona>()
            {
                new Persona {Nombre = "Eduardo",Edad=30,FechaIngresoEmpresa = new DateTime(2021,1,2),Soltero=true},
                new Persona {Nombre = "Nidia",Edad=19,FechaIngresoEmpresa = new DateTime(2015,11,12),Soltero=true},
                new Persona {Nombre = "Alejandro",Edad=45,FechaIngresoEmpresa = new DateTime(2020,4,12),Soltero=false},
                new Persona {Nombre = "Valentina",Edad=24,FechaIngresoEmpresa = new DateTime(2021,7,8),Soltero=false},
                new Persona {Nombre = "Roberto",Edad=61,FechaIngresoEmpresa = DateTime.Now.AddDays(-1),Soltero=false}
            };

a)  Listar el nombre y la edad de las personas menores o iguales de 25.
b)  Listar el nombre de las personas que son solteras. 
c)  Listar el nombre y la edad de las personas que son solteras y menores o iguales de 25. 
d)  Listar el nombre de las personas con menos de 3 meses en la empresa.
e)  Listar el nombre y la edad de las personas ordenadas por su edad de manera ascendente.
f)  Listar solo el nombre de las personas
g)  Listar el nombre y la edad de las personas, ordenadas por el nombre de manera ascendente.

Solución:

a)
            List<Persona> listPersons = personas.Where(p => p.Edad <= 25).ToList();

            foreach (Persona p in listPersons)
                Console.WriteLine($"{p.Nombre} {p.Edad}"); //Nidia

b)
            List<Persona> listPersons = personas.Where(p => p.Soltero).ToList();

            foreach (Persona p in listPersons)
                Console.WriteLine($"{p.Nombre}");

c)
            List<Persona> listPersons = personas.Where(p => p.Soltero && p.Edad<=25).ToList();

            foreach (Persona p in listPersons)
                Console.WriteLine($"{p.Nombre} {p.Edad}");


d)
            List<Persona> listPersons = personas.Where(p => p.FechaIngreso>=DateTime.Today.AddMonths(-3)).ToList();

            foreach (Persona p in listPersons)
                Console.WriteLine($"{p.Nombre}");

e)
           var result = personas.OrderBy(p=>p.Edad);

            foreach (Persona p in result)
                Console.WriteLine($"{p.Nombre} {p.Edad}");

f)
           var result = personas.Select(p=>p.Nombre);

            foreach (var nombre in result)
                Console.WriteLine(nombre);

g)
           var result = personas.OrderBy(p=>p.Nombre).Select(p=>new
           {
                Nombre = p.Nombre,
                Edad = p.Edad
            });

            foreach (var p in result)
                Console.WriteLine($"{p.Nombre} {p.Edad}");

3.  Se tiene una lista de empleados, donde tiene 3 propiedades el IdEmpleado, Nombre y el IdModalidad.

            List<Empleado> listaEmpleado = new List<Empleado>
            {
                new Empleado {IdEmpleado=1, Nombre="Pedro", IdModalidad=1},
                new Empleado {IdEmpleado=2, Nombre="Maria", IdModalidad=2},
                new Empleado {IdEmpleado=3, Nombre="Luis", IdModalidad=1},
                new Empleado {IdEmpleado=4, Nombre="Andrea", IdModalidad=3}
            };

Obtener una lista con los nombres de los empleados cuya IdModalidad es igual a 1.

Solución:
List<Empleado> listaEmpleado = new List<Empleado>
    {
        new Empleado {IdEmpleado=1, Nombre="Pedro", IdModalidad=1},
        new Empleado {IdEmpleado=2, Nombre="Maria", IdModalidad=2},
        new Empleado {IdEmpleado=3, Nombre="Luis", IdModalidad=1},
        new Empleado {IdEmpleado=4, Nombre="Andrea", IdModalidad=3}
    };

    var result = listaEmpleado.Where(e => e.IdModalidad == 1).ToList();

    foreach (var e in result)
    {
        Console.WriteLine($"{e.Nombre}");  // Pedro Luis
    }

------------------------------------------------------------------------------------------------------------------
LINQ INNER JOIN

1. Dadas las siguientes 2 listas de objetos, 
   Crear la clase Empleado con las siguientes propiedades: IdEmpleado, Nombre y el IdModalidad
   Crear la clase Modalidad Contrato con las siguientes propiedades: IdModalidad y el NombreM
             List<Empleado> listaEmpleado = new List<Empleado>
            {
                new Empleado {IdEmpleado=1, Nombre="Pedro",IdModalidad=1},
                new Empleado {IdEmpleado=2, Nombre="Jorge",IdModalidad=2},
                new Empleado {IdEmpleado=3, Nombre="Luis",IdModalidad=1},
                new Empleado {IdEmpleado=4, Nombre="Julio",IdModalidad=3},
            };

            List<ModalidadContrato> listaModalidad = new List<ModalidadContrato>
            {
                new ModalidadContrato {IdModalidad=1, NombreModalidad="CAS"},
                new ModalidadContrato {IdModalidad=2, NombreModalidad="TEMPORAL"},
                new ModalidadContrato {IdModalidad=3, NombreModalidad="INDEFINIDO"}
            };

Mediante una consulta linq Imprimir el siguiente resultado:
El empleado "nombre empleado" y el "nombre modalidad". 

Solución:

var consulta = listaModalidad.Join(
                listaEmpleado,
                m => m.IdModalidad,
                e => e.IdModalidad,
                (m, e) => new{NombreModalidad = m.NombreModalidad,NombreEmpleado = e.Nombre});

foreach (var c in consulta)
    Console.WriteLine($"{c.NombreEmpleado} {c.NombreModalidad}");

2. Dadas las siguientes 3 listas de objetos, 
   Crear la clase Empleado con las siguientes propiedades: IdEmpleado, NombreEmpleado y el IdModalidad
   Crear la clase ModalidadContrato con las siguientes propiedades: IdModalidad y el NombreM
   Crear la clase Producto con las siguientes propiedades: IdProducto,NombreProducto, Id

    List<Categoria> listaCategoria = new List<Categoria>
    {
    new Categoria{IdCategoria=1 , NombreCategoria="Fruta"},
    new Categoria {IdCategoria=2 ,NombreCategoria="Verdura"}
    };
List<Proveedor> listaProveedor = new List<Proveedor>
      {
new Proveedor{IdProveedor=1 , NombreProveedor="ABC"},
new Proveedor {IdProveedor=2 , NombreProveedor="XYZ"}
       };
List<Producto> listaProducto = new List<Producto>
    {
    new Producto{IdProducto=1 , NombreProducto="Fresa" , IdCategoria=1 , IdProveedor=2},
    new Producto {IdProducto=2 , NombreProducto="Tomate" , IdCategoria=2 , IdProveedor=1}
    };

Listar el nombre del producto, el nombre de la categoria y el nombre del proveedor.

Solucion:

var result = listaCategoria.Join(
    listaProducto,
    cat => cat.IdCategoria,
    prod => prod.IdCategoria,
    (cat, prod) => new { Categoria = cat, Producto = prod }
    ).Join(
    listaProveedor,
    prodcat => prodcat.Producto.IdProveedor,
    prov => prov.IdProveedor,
    (prodcat, prov) => new { ProductoCategoria = prodcat, Proveedor = prov }
    );

foreach (var c in result)
        Console.WriteLine($"{c.ProductoCategoria.Producto.NombreProducto} {c.ProductoCategoria.Categoria.NombreCategoria} {c.Proveedor.NombreProveedor}");



No hay comentarios:

Publicar un comentario

Instalación de SQL Server 2022 en Ubuntu 22.04

Instalación de SQL Server 2022 en Ubuntu 22.04 ====================================== Actualizar repositorios de Ubuntu sudo apt update sudo...