Ответ 1
Вам нужно использовать оператор DefaultIfEmpty. Приведенный ниже код должен привести к левому внешнему соединению.
var q = from c in customers
join o in orders on c.Key equals o.Key into g
from o in g.DefaultIfEmpty()
select new {Name = c.Name, OrderNumber = o == null ? "(no orders)" : o.OrderNumber};