Estoy tratando de implementar una consulta en LINQ que usa una combinación externa izquierda con múltiples condiciones en la cláusula ON.
Usaré el ejemplo de las siguientes dos tablas Proyecto (ProjectID, ProjectName) y Task (TaskID, ProjectID, TaskName, Completed). Quiero ver la lista completa de todos los proyectos con sus respectivas tareas, pero solo aquellas tareas que se completaron.
No puedo usar un filtro para Completed == true
porque eso filtrará cualquier proyecto que no tenga tareas completadas. En su lugar, quiero agregar Completed == true
a la cláusula ON de la combinación para que se muestre la lista completa de proyectos, pero solo se mostrarán las tareas completadas. Los proyectos sin tareas completadas mostrarán una sola fila con un valor nulo para Task.
Aquí está la base de la consulta.
from t1 in Projects
join t2 in Tasks
on new { t1.ProjectID} equals new { t2.ProjectID } into j1
from j2 in j1.DefaultIfEmpty()
select new { t1.ProjectName, t2.TaskName }
¿Cómo agrego && t2.Completed == true
a la cláusula on?
Parece que no puedo encontrar ninguna documentación LINQ sobre cómo hacer esto.