Как запросить соединительную таблицу

Используя Entity Framework/LINQ, мне нужна помощь в следующем.

В базе данных есть таблица людей со столбцом идентификации PersonId. Существует также таблица Skills со столбцом идентификации SkillId. Эти два связаны через третью таблицу PeopleSkills, которая имеет свой собственный столбец идентификаторов PeopleSkillsId, внешний столбец, ссылающийся на PersonId, и внешний столбец, ссылающийся на SkillId.

В метод, который я пытаюсь написать, передается параметр типа List, содержащий любое количество навыков, которые мы ищем. Метод должен возвращать список, который связан со всеми навыками в списке входных параметров. Как составить список, исключающий всех, у кого нет всех навыков из списка «Навыки»?

У меня проблема в том, что у меня очень мало опыта работы с SQL. У меня есть много другого опыта программирования, но SQL всегда немного груб для меня. Я думал об использовании соединения, но это не сработает. то есть, если у моего человека есть навыки A и B, а в списке поиска есть элементы для B и C, соединение сопоставит их с B и вернет человека. Мне нужно, чтобы этот человек был исключен, потому что у него нет ни B, ни C.

Я также думал о повторении списка навыков и создании фильтра, но это кажется уродливым. Это просто похоже на проблему, для решения которой был создан LINQ, использующий список для запроса другого списка, и для которой должно быть элегантное решение.

7
задан Steve Wash 24 July 2012 в 18:42
поделиться