【问题标题】:How to write linq query comparing 2 tables?如何编写比较 2 个表的 linq 查询?
【发布时间】:2013-11-30 21:16:30
【问题描述】:

好的,所以我有一个包含 Projects、Users 和 ProjectMembers 表的数据库,Projects 表有一个 ID 列和 ProjectOwner 列,这是来自 Users 表的外键,Users 表有 ID、用户名列和 ProjectMembers表有一个 ID、ProjectID 和 UserID 列,后两列是 Projects 表和 Users 表的外键。

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

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

我进行了各种尝试,但到目前为止都无法正确查询。

【问题讨论】:

    标签: c# sql linq


    【解决方案1】:

    这样的事情应该可以工作:

    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
    

    【讨论】:

      【解决方案2】:

      您可以创建多个from 子句:

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

      【讨论】:

      • 我曾尝试过类似的方法,但它需要返回包含 1 个表而不是另一个表中的值的记录。
      【解决方案3】:

      试试这个:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多