Ну, одну вещь, которую вы можете попробовать, - это извлечь набор желаемых языковых идентификаторов, чтобы начать с:
(я предполагаю, что языковые идентификаторы - это строки. Если нет, пожалуйста, дайте больше информации.)
public IQueryable<Candidate> GetMatchingCandidates(Job job)
{
List<string> languageIds = job.JobLanguages
.Select(jl => jl.LanguageId.Value)
.ToList();
return from candidate in _db.Candidates
where candidate.CandidateLanguages
.Any(languageIds.Contains(c.LanguageId))
orderby candidate.Name descending
select candidate;
}
Если задание уже находится в базе данных, вы можете попробовать выполнить внутренний запрос, используя идентификатор задания для ссылки на копию базы данных, а не на локальную.