如何编写linq查询比较2个表?

时间:2013-11-30 21:16:31

标签: c# sql linq

好的,我有一个包含Projects,Users和ProjectMembers表的数据库,Projects表有一个ID列和ProjectOwner列,它是Users表中的外键,Users表有ID,用户名列和ProjectMembers table有一个ID,ProjectID和UserID列,后两列是Projects表和Users表中的外键。

基本上,项目是管理项目的东西,用户可以创建一个项目使其成为所有者,然后可以将其他用户分配给该项目,该项目将记录添加到ProjectMembers表。

我正在尝试编写一个linq查询,该查询选择Projects表中的所有记录,其中特定用户不是ProjectOwner,但它们是ProjectMembers表中的ProjectMember?

我做了各种尝试,但到目前为止还没有能够正确查询。

3 个答案:

答案 0 :(得分:2)

这样的事情应该有效:

from p in Projects
    join m in ProjectMembers on m.ProjectID equals p.ID
    where m.UserID == userID && p.ProjectOwner != userID
    group p by p.ID
    select p

答案 1 :(得分:0)

您可以制作多个from条款:

from e1 in table1
from e2 in table2
where e1.key == e2.id
select e1.name

答案 2 :(得分:0)

试试这个:

from x in Users
where ProjectMembers.Any(y => y.UserID==x.ID) &&
!ProjectOwners.Any(z => z.ProjectOwner==x.ID)
select x;