1

Мне приходилось использовать таблицу поиска в проекте EF, и мне потребовалось немного поработать, чтобы заставить его работать, но я не уверен, как запросить что-то.Использование таблиц поиска с Entity Framework

Если у меня есть три таблицы (это тест проект, чтобы проиллюстрировать этот вопрос):

Person 
------ 
ID - Int - PK 
PersonName - varchar[50] 

и

Skill 
----- 
ID - Int - PK 
SkillName - varchar[50] 

, которые связаны между собой с помощью таблицы поиска:

PS_Lookup 
--------- 
ID - Int - PK 
PersonID - Int - FK : Person.ID 
SkillID - Int - FK : Skill.ID 

Теперь, если я хочу вернуть всех пользователей, у которых есть навык ID 1, я разработал, я могу сделать:

var result = (from p in context.People       
       select new 
       { 
        PersonID = p.ID, 
        PersonName = p.PersonName, 
        FirstSkill = (from s in p.PS_Lookup 
           where s.ID == 1 
           select s.SkillName),        
       }).ToList(); 

Мой вопрос в том, что мне нужно изменить по вышеуказанному запросу, чтобы вернуть PersonName и PersonID всех, у кого есть навык с идентификатором 1? i.e. Не возвращается «FirstSkill». Мне не нужно имя, поскольку я знаю, что такое FirstSkill, и я не вижу, что мне делать с предложением where.

ответ

2

Вам нужно использовать, когда условие в запросе:

var result = (from p in context.People 
       where p.PS_Lookup.Any(ps => ps.ID == 1) 
       select new { p.ID, p.PersonName }) 
      .ToList(); 
+0

Marvelous, спасибо. Я только что привык к Линку, но он все равно меня снова и снова заставляет. – GrandMasterFlush