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

时间:2016-01-13 16:27:51

标签: c# asp.net entity-framework linq contains

我正在尝试根据用户所属的组提取所有Institutions和非删除InstitutionUsersInstitutionInstitutionUsersInstitutionUsersInvestigatorGroups(机构也有群组)。我知道我的问题在哪里,非常感谢任何帮助

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

enter image description here

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望获得一个Institution列表,其中InstitutionUser至少有IsTrashed=falseInvestigationGroup并且与{Id至少有一个groupIds相关联1}}包含在传递的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(); 过滤器中。

如果这是真的,那么以下查询应该产生所需的结果

addChild