The inner join is very strait forward:
from x join y on x.id equals y.id
select new(x,y)
For a left join, why not:
from x leftJoin y on x.id equals y.id
select new(x,y)
Also, IMHO, the new leftJoin should automagically convert y into a nullable of y....
Continuing on...
This seems super odd, like the taste you get after brushing your teeth and drinking orange juice:
from x group join y on x.id equals y.id
into group
from z in group.DefaultIfEmpty
select new(x,z)