[英]Conditions on navigation properties using LINQ Lambda expressions
我試圖根據用戶所屬的組拉所有Institutions
和未使用的InstitutionUsers
。 Institution
有InstitutionUsers
而InstitutionUsers
有InvestigatorGroups
(機構也有組)。 我知道我的地方有問題,非常感謝您的幫助
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();
}
}
如果我理解正確,則希望獲得一個機構列表,該Institution
列表至少具有一個IsTrashed=false
InstitutionUser
,並且與傳遞的groupIds
過濾器中包含的Id
至少與一個InvestigationGroup
相關聯。
如果是這樣,則以下查詢應產生期望的結果
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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.