Ésta no es una respuesta completa para usted, pero a la izquierda se unen pieza que puede utilizar el operador DefaultIfEmpty así:
var collection =
from u in db.Universe
join history in db.History on u.id = history.id into temp
from h in temp.DefaultIfEmpty()
where h.dateCol < DateTime.Now.Date.AddDays(-1)
select u.id, u.name, h.dateCol ?? '1900-01-01'
no he tenido la necesidad de hacer ningún GroupBy comandos, sin embargo, así que dejé eso para no enviarte por el camino equivocado. Otras dos cosas rápidas para tener en cuenta. No he podido unirme realmente a dos parámetros, aunque como se indicó anteriormente, hay formas de evitarlo. También el ?? el operador funciona muy bien en lugar del isnull en SQL.