 <p>Try this:</p> <pre><code>from ts in Db.Tasks join prt in Db.ProjectTasks on ts.Id equals prt.TaskId from tl in Db.Timeline.Where(x =&gt; (x.TypeId == ts.Id) &amp;&amp; (x.Type == (int)Provider.EntityType.TASK)) .DefaultIfEmpty() from dur in Db.Duration.Where(x =&gt; (x.TypeId == ts.Id) &amp;&amp; (x.Type == (int)Provider.EntityType.TASK)) .DefaultIfEmpty() where (prt.ProjectId == ProjectId) select new { Id = "T" + ts.Id, ts.Name, ts.Description, //... prt.ProjectId, tl.StartDate, tl.EndDate, tl.LatestEndDate, //... dur.ActualDuration, dur.ActualDurationPlanned } </code></pre> <p><code>from x in y.DefaultIfEmpty()</code> is a simple way to create a <code>LEFT JOIN</code>.</p> <p><strong>EDIT:</strong> Changed <code>.Where()</code> in left joins.</p>