Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.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
C# 使用LINQ Lambda表达式的导航属性条件_C#_Asp.net_Entity Framework_Linq_Contains - Fatal编程技术网

C# 使用LINQ Lambda表达式的导航属性条件

C# 使用LINQ Lambda表达式的导航属性条件,c#,asp.net,entity-framework,linq,contains,C#,Asp.net,Entity Framework,Linq,Contains,我正试图根据用户所属的组,提取所有机构和非垃圾机构用户。机构有机构用户和机构用户有调查组(机构也有组)。我知道自己哪里有问题,非常感谢您的帮助 public class InstitutionRepository : IInstitutionRepository { public IEnumerable<Institution> GetInstitutionGroupUsers(IEnumerable<int> groupIds) { us

我正试图根据用户所属的组,提取所有
机构
和非垃圾
机构用户
机构
机构用户
机构用户
调查组
(机构也有组)。我知道自己哪里有问题,非常感谢您的帮助

public class InstitutionRepository : IInstitutionRepository
{
    public IEnumerable<Institution> GetInstitutionGroupUsers(IEnumerable<int> groupIds)
    {
        using (var context = new GameDbContext())
        {

            return context.Institutions
                .Include(i => i.InstitutionUsers)
                .Where(i => i.InstitutionUsers
                    .Select(g => g.IsTrashed)
                        .Contains(false) && groupIds.Contains(i.InstitutionUsers.Select(g => g.InvestigatorGroupUsers.Select(x => x.InvestigatorGroupId)))).ToArray().ToList();
        }
    }
公共类机构存储库:IInstitutionRepository
{
公共IEnumerable GetInstitutionGroupUsers(IEnumerable GroupId)
{
使用(var context=new GameDbContext())
{
返回上下文。机构
.包括(i=>i.InstitutionUsers)
.其中(i=>i.InstitutionUsers
.选择(g=>g.IsTrashed)
.Contains(false)和&groupid.Contains(i.InstitutionUsers.Select(g=>g.investorgroupusers.Select(x=>x.investorgroupid))).ToArray().ToList();
}
}

如果我理解正确,您希望获得一个
机构的列表,该机构至少有一个
机构用户
,且
IsTrashed=false
,并且与通过的
组Id
过滤器中包含的至少一个
调查组
Id
相关联

如果这是真的,那么下面的查询应该会生成所需的结果

return context.Institutions
    .Include(i => i.InstitutionUsers)
    .Where(i => i.InstitutionUsers.Any(u => !u.IsTrashed && 
        u => u.InvestigatorGroupUsers.Any(gu => groupIds.Contains(gu.InvestigatorGroupId))))
    .ToList();