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}");