簡體   English   中英

使用LINQ Lambda表達式的導航屬性的條件

[英]Conditions on navigation properties using LINQ Lambda expressions

我試圖根據用戶所屬的組拉所有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();
        }
    }

在此處輸入圖片說明

如果我理解正確,則希望獲得一個機構列表,該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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM