Теоретически, пока вы не потребуете результат перечисления, это все равно один запрос из-за отложенного выполнения. Запрос будет выполнен, когда вы выполните итерацию по результату, поэтому влияние на производительность очень мало по сравнению с разделением запросов на более мелкие блоки.
Однако, если вы хотите просто объединить оба блока, вы можете просто вставить первый во второй:
var result = from t in from
ddr in dc.E_DesignDocumentRevisions
group ddr by ddr.DesignDocumentID into g
select new { MaxRevision = g.Max(x => x.Revision), g.Key }
join ddr in dc.E_DesignDocumentRevisions
on new { DesignDocumentID = t.Key, Revision = t.MaxRevision } equals new { ddr.DesignDocumentID, ddr.Revision }
join dd in dc.E_DesignDocuments
on ddr.DesignDocumentID equals dd.ID
where dd.DesignDocumentTypeID == DesignDocumentTypes.MR
select new { ddr.ID, dd.DocumentNumber };