Una cosa que es harto complicada de obtener por medio de SQL o con ADO, con Linq es muy sencillito: teniendo un listado de máquinas, obtener todas aquellas que no estén asignadas a un proyecto dado.
/// <summary> /// Returns a list with all the machines assigned to a project /// </summary> /// <param name="pDataContext">Datacontext where the objects are loaded</param> /// <param name="pIdProject">ID of the project</param> /// <returns>A list with the elements</returns> public static IQueryable<Maquina> GetMachineListNotProject(QTestDataContext pDataContext, int pIdProject) { //First recover the machines ASSIGNED to the project IQueryable<Maquina> assignedList = GetMachineList(pDataContext, pIdProject); //Now select those machines not in the previous list return pDataContext.Maquina.Where(ob => !(assignedList.Contains(ob))).Select(ob => ob); }
Me encanta.
Primero me traigo la lista de todas las máquinas y después selecciono aquellos que no estén contenido en dicho listado.
Simple y funcional.
Ahora solo quedaría traducirlo de expresiones lambda a Linq.
P.D. El uso del DataContext y el que esté en inglés es por el motivo que es una pieza de código de un proyecto real.
No hay comentarios:
Publicar un comentario