【问题标题】:Conditions on navigation properties using LINQ Lambda expressions使用 LINQ Lambda 表达式的导航属性条件
【发布时间】:2016-04-18 17:39:34
【问题描述】:

我正在尝试根据用户所属的组提取所有Institutions 和非垃圾InstitutionUsers。一个InstitutionInstitutionUsersInstitutionUsersInvestigatorGroups(一个机构也有组)。我知道我的哪里有问题,非常感谢任何帮助

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

【问题讨论】:

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


    【解决方案1】:

    如果我理解正确,您希望获得Institution 的列表,其中至少有一个InstitutionUserIsTrashed=false,并与至少一个InvestigationGroup 相关联,其中Id 包含在传递的groupIds 中筛选。

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

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

    【讨论】:

      猜你喜欢
      • 2010-12-28
      • 1970-01-01
      • 2021-03-20
      • 2020-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      • 2015-04-26
      相关资源
      最近更新 更多