Estou tentando implementar uma consulta em LINQ que usa uma junção externa esquerda com várias condições na cláusula ON.
Usarei o exemplo das duas tabelas a seguir, Project (ProjectID, ProjectName) e Task (TaskID, ProjectID, TaskName, Completed). Quero ver a lista completa de todos os projetos com suas respectivas tarefas, mas apenas as tarefas que foram concluídas.
Não posso usar um filtro para Completed == true
porque isso filtrará quaisquer projetos que não tenham tarefas concluídas. Em vez disso, desejo adicionar Completed == true
à cláusula ON da junção para que a lista completa de projetos seja mostrada, mas apenas as tarefas concluídas sejam mostradas. Projetos sem tarefas concluídas mostrarão uma única linha com um valor nulo para Tarefa.
Aqui está a base da 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 }
Como faço && t2.Completed == true
para adicionar à cláusula on?
Não consigo encontrar nenhuma documentação do LINQ sobre como fazer isso.