I started out with this question, which I sort of answered there, and now I\'m asking the more fundamental question here. I\'ve simplified the query down to this:
@Marc Gravell beat me to the answer, credit also to the various answerers to this question who put me on the right track.
I did it much like Marc's first suggestion, like so:
var q1 = from ent in LinqUtils.GetTable()
from tel in ent.Telephones.DefaultIfEmpty()
select new { ent, tel };
var q2 = from q in q1.AsEnumerable()
select new {
Name = q.ent.FormattedName,
Tel = q.tel != null ? q.tel.FormattedNumber : ""
};
And that did it! Thanks, all!