繁体   English   中英

基于子子女的EF6条件

[英]EF6 Condition based on sub child

我有这个C#代码可以工作,但我希望能够选择代理,如果一个人在查询中的所有内容。 有没有办法在查询中完成所有操作?

        var retVal = new List<Agency>();
        var items=_db.Agencies
               .Include(x => x.AgencyMembers.Select(y => y.Person))
               .Where(w => w.NationId == User.NationId).ToList();

        foreach (var agency in items)
        {
            if(agency.AgencyMembers.Any(c=>c.Person.Id==personId))
                retVal.Add(agency);
        }
        return retVal;

您应该只能将该谓词添加到查询中。

     return _db.Agencies
        .Include(x => x.AgencyMembers.Select(y => y.Person))
        .Where(w => w.NationId == User.NationId)
        .Where(agency => agency.AgencyMembers.Any(c=>c.Person.Id==personId))
        .ToList();

根据您拥有的导航属性,您可以从人员开始简化它。

    return _db.People
        .Single(p => p.Id == personId)
        .Agencies
        .Where(w => w.NationId == User.NationId)
        .ToList();

你可以试试这个:

 var items=_db.Agencies
              .Include(x => x.AgencyMembers.Select(y => y.Person))
              .Where(agency=> agency.NationId == User.NationId && agency.AgencyMembers.Any(c=>c.Person.Id==personId))
              .ToList();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM