Запрос на двойное соединение, возвращающий несколько идентичных записей вместо уникальных - PullRequest
1 голос
/ 27 августа 2011

Я пытаюсь получить команды, к которым принадлежит человек, используя этот запрос.Проблема в том, что он возвращает команды всех отделов команды, в которой находится человек (я получаю несколько одинаковых записей обратно).Я предполагаю, что мне нужно заменить .contains, но я не могу понять, чем, поскольку я полный новичок, и я не могу найти никаких полезных примеров с двойным объединением.Что я должен изменить, чтобы заставить его работать как задумано?Заранее спасибо.

public IQueryable<Team> GetTeamsByPersonID(int id)
    {
        return from t in entities.Teams
               join d in entities.Departments
                on t.TeamID equals d.TeamID
               where (from p in entities.Person_Departments
                      join dep in entities.Departments
                      on p.DepartmentID equals dep.DepartmentID
                      where p.PersonID == id
                      select dep.TeamID).Contains(d.TeamID)
               select t;
    }

1 Ответ

4 голосов
/ 27 августа 2011

1001 * попробовать *

return (
from t in entities.Teams
from d in entities.Departments
from p in entities.Person_Departments
where t.TeamID == d.TeamID && p.DepartmentID == d.DepartmentID && p.PersonID == id
select t
).Distinct();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...