我有这个有效的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();
关于c# - EF6基于子 child 的条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30017514/