Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq to sql 返回多个相同记录而不是唯一记录的双连接查询_Linq To Sql - Fatal编程技术网

Linq to sql 返回多个相同记录而不是唯一记录的双连接查询

Linq to sql 返回多个相同记录而不是唯一记录的双连接查询,linq-to-sql,Linq To Sql,我正在尝试使用此查询获取一个人所属的团队。问题是它返回了该人员所在团队的所有部门的团队(我得到了多个相同的记录)。我想我必须替换.contains,但我不知道用什么替换,因为我是一个完全的新手,而且我找不到任何有用的双连接示例。我必须改变什么才能使其按预期工作?提前谢谢 public IQueryable<Team> GetTeamsByPersonID(int id) { return from t in entities.Teams

我正在尝试使用此查询获取一个人所属的团队。问题是它返回了该人员所在团队的所有部门的团队(我得到了多个相同的记录)。我想我必须替换.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;
    }
public IQueryable GetTeamsByPersonID(int-id)
{
从实体中的t返回。团队
加入到实体、部门中
t.TeamID等于d.TeamID
其中(来自实体、人员和部门中的p)
加入dep的实体。部门
在p.DepartmentID上等于dep.DepartmentID
其中p.PersonID==id
选择dep.TeamID)。包含(d.TeamID)
选择t;
}
试试看

试一试

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();