Я пытаюсь реплицировать следующий SQL, используя LINQ to EF, но не повезло.LINQ to EF left join with multiple condition
select * from Role
left join QueueAccess on Role.RoleId = QueueAccess.RoleId and queueId = 361
Вот что я пробовал.
var myAccess = (from role in entity.Role.Include(p => p.QueueAccess)
join qa in entity.QueueAccess
on new { rID = role.RoleId, qID = queueId } equals new { rID = qa.RoleId, qID = qa.QueueId }
select role).ToList();
Также попробовал это.
var myAccess = entity.Role.Include(p => p.QueueAccess)
.Where(x => x.QueueAccess.Any(a => a.QueueId == queueId)).ToList();
Я продолжаю получать только запись с указанным queueId, но ни один из других записей, где queueId является нулевым.
Благодарим за помощь.
DefaultIfEmpty() не поддерживается в EF из того, что я пробовал. Могли бы вы предложить работу? Спасибо – Joe
'DefaultIfEmpty' поддерживается в EF 4, но не в EF 1. –
@Joe: У вас есть коллекция, например Role.QueueAccesses в вашей модели? –