Я не могу найти причину, по которой: а) присоединяться и применять различные планы, и б) LINQ использует приложение вообще. Это странный случай.
Я пытался придумать обходные пути, надеюсь, что они работают:
//project only the needed columns
var contactInfos = from person in persons
join tempDesiredCar in
desiredCars.Select(x => new { x.groupEntity_id, x.name })
on person.contact_id equals tempDesiredCar.groupEntity_id
into tempDesiredCars
from desiredCar in tempDesiredCars.DefaultIfEmpty()
select new { name = person.name, car = desiredCar.name };
//change join to from
var contactInfos = from person in persons
from desiredCar in
desiredCars.Select(x => new { x.groupEntity_id, x.name })
.Where(x => person.contact_id = x.groupEntity_id)
.DefaultIfEmpty()
select new { name = person.name, car = desiredCar.name };
Это просто спекулятивные перезаписи. Надеюсь, они работают по совпадению ... Я знаю, что это не очень хороший способ решить проблему, но в этом странном случае это лучшее, что я могу предложить.