【问题标题】:Linq query to get disjoint set in a many to many relationLinq 查询以获取多对多关系中的不相交集
【发布时间】:2014-05-06 21:05:28
【问题描述】:

在我的应用程序中,我管理分配给用户的人员,关联类型是多对多的,因为一个人员可以分配给多个用户。所以我有以下表格。

用户表:
用户ID

人员表:
个人身份

(由实体框架管理的联合表,在 Linq 查询中不可见)
PersonApplicationUser 表:
用户ID
个人ID

我想检索未分配给任何用户的人员集。到目前为止,我可以通过这种方式获取未分配给当前登录用户的一组人员

var query = db.Persons.Except(user.Persons);

不幸的是,它也会检索分配给其他用户的人员,这是不正确的,我认为除了是要走的路,但需要建议。

编辑: 我发现的主要困难是我无法从代码访问联合表 PersonApplicationUser。

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    你正在寻找这个:

    db.Persons.Where(p => !p.Users.Any())
    

    【讨论】:

      【解决方案2】:

      试试这个:

      db.Persons.Where(p => p.Users.Count() == 0);
      

      【讨论】:

        【解决方案3】:

        Entity Framework 知道关系就像集合一样,因此您可以执行集合操作,EF 会将它们转换为相关的 sql。

        你想要的是这样的:

        var query =  from p in db.Persons
                     where !p.Users.Any()
                     select p;
        

        或者在方法语法中:

        var query = db.Persons.Where(p => !p.Users.Any());
        

        【讨论】:

          猜你喜欢
          • 2020-10-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-04
          • 2021-01-30
          • 1970-01-01
          相关资源
          最近更新 更多