Pues seguimos con esta serie de post de lynq, así como en algún momento lo maneje lynq nos ayuda a hacer mas sencillo el manejo de datos, por ello lo que vamos ha hacer esta vez es enlazar 2 tablas mediante lynq.
Bueno realmente hacer esto es muy sencillo, veamos un código y platiquemos sobre el:
Bien que hace el código, el código lo que hace es que carga 2 objetos y obtiene un tercer objeto anónimo poco resultado de ambos, y en donde esta la magia
si observamos estas lineas es muy fácil de leer, estamos usando 2 objetos uno llamado alumnos y uno llamado calificaciones, le estamos indicando a lynq que el valor que se emplea para hacer la unión es el campo lista, que se encuentra en ambos objetos, ahora bien, en un post pasado vimos que podemos usar linq para hacer convenciones de datos entre objetos, bueno en este caso estamos creando un nuevo objeto
select new { nombre = a.nombre, calificacion = b.calificacion };
pero como pueden ver, no existe un objeto con estas características, estamos creando un objeto anónimo, que lo estamos utilizando en la siguiente linea.
Bueno realmente hacer esto es muy sencillo, veamos un código y platiquemos sobre el:
namespace union { class Program { public class Alumno { public string nombre { get; set; } public int Lista { get; set; } } public class Calificacion { public string materia { get; set; } public int Lista { get; set; } public int calificacion { get; set; } } static void Main(string[] args) { List<Alumno> Alumnos = new List<Alumno>(); Alumnos.Add(new Alumno() { nombre="Carlos", Lista=1 }); Alumnos.Add(new Alumno() { nombre = "Miguel", Lista = 2 }); Alumnos.Add(new Alumno() { nombre = "Juan", Lista = 3 }); Alumnos.Add(new Alumno() { nombre = "Raquel", Lista = 4 }); Alumnos.Add(new Alumno() { nombre = "Irma", Lista = 5 }); List<Calificacion> calificaciones = new List<Calificacion>(); calificaciones.Add(new Calificacion()
{ Lista=1, calificacion=8, materia="1" }); calificaciones.Add(new Calificacion()
{ Lista = 1, calificacion = 8, materia = "2" }); calificaciones.Add(new Calificacion()
{ Lista = 1, calificacion = 9, materia = "3" }); calificaciones.Add(new Calificacion()
{ Lista = 1, calificacion = 10, materia = "4" }); calificaciones.Add(new Calificacion()
{ Lista = 2, calificacion = 8, materia = "1" }); calificaciones.Add(new Calificacion()
{ Lista = 3, calificacion = 8, materia = "2" }); calificaciones.Add(new Calificacion()
{ Lista = 4, calificacion = 9, materia = "3" }); calificaciones.Add(new Calificacion()
{ Lista = 2, calificacion = 10, materia = "4" }); var x = from a in Alumnos join b in calificaciones
on a.Lista equals b.Lista
select new { nombre = a.nombre, calificacion = b.calificacion }; foreach(var loop in x) { Console.WriteLine(loop.nombre + " - " + loop.calificacion); } Console.ReadLine(); } } }
Bien que hace el código, el código lo que hace es que carga 2 objetos y obtiene un tercer objeto anónimo poco resultado de ambos, y en donde esta la magia
var x = from a in Alumnos join b in calificaciones
on a.Lista equals b.Lista
select new { nombre = a.nombre, calificacion = b.calificacion };
si observamos estas lineas es muy fácil de leer, estamos usando 2 objetos uno llamado alumnos y uno llamado calificaciones, le estamos indicando a lynq que el valor que se emplea para hacer la unión es el campo lista, que se encuentra en ambos objetos, ahora bien, en un post pasado vimos que podemos usar linq para hacer convenciones de datos entre objetos, bueno en este caso estamos creando un nuevo objeto
select new { nombre = a.nombre, calificacion = b.calificacion };
pero como pueden ver, no existe un objeto con estas características, estamos creando un objeto anónimo, que lo estamos utilizando en la siguiente linea.
foreach(var loop in x) { Console.WriteLine(loop.nombre + " - " + loop.calificacion); }
Felices Lineas
No hay comentarios.:
Publicar un comentario