efcorelinqfiltersubentity我的linq查询有问题。我有3个实体:用户、目标和结果。每个用户可以有多个(或没有)目标,每个目标可以有多个(或没有)结果我想要一个返回所有用户的查询,包括可能的目标和可能的结果。这很好用。但现在我想包含过滤器来过滤目标和结果。这样,查询只返回符合这些条件的用户、目标和结果。publicclassUser{publicICollectionTargets{get;set;}publicstringotherProperty{get;set;}}publicclassTarget{publicICollectionResults{get;set;}publicUseruser{get;set;}publicstringLanguage{get;set;}}publicclassResult{publicTargetTarget{get;set;}publicintscore{get;set;}}任何可以帮助我的EF内核linq专家?亲切的问候,罗布雷希特编辑1varquery=来自_auditUserRepository.GetAll().Include(u=>u.user).WhereIf(!input.Group.IsNullOrWhiteSpace(),u=>u.Group==input.Group).WhereIf(!input.Filter.IsNullOrWhiteSpace(),u=>u.user.FullName.ToLower().Contains(input.Filter.ToLower()))选择auditUser;varresults=query.Include(u=>u.Targets).ThenInclude(t=>t.AuditResults).PageBy(input).ToListAsync();等待查询。SelectMany(u=>u.Targets).From!=null,r=>r.CompletionDate>=input.From).WhereIf(input.To!=null,r=>r.CompletionDate<=input.From).LoadAsync();这就是我所拥有的,但它有两个问题:如果没有一个结果不包括它似乎包含或包含的目标,则会创建一个内部连接而不是左连接。这不会过滤语言或日期。我建议您创建一个具有所需属性的ViewModel类。示例:publicclassUserViewModel{[Display(Name="Other")]publicstringotherProperty{get;设置;}[Display(Name="PossibleTargets")]publicListtargets{get;set;}[Display(Name="PossibleResults")]publicListresults{get;set;}}然后在“repository”类中,你可以创建一个方法来过滤结果。以上就是C#学习教程:efcorelinq过滤子实体分享的全部内容,如果对你有用还需要进一步了解C#学习教程,希望大家多多关注—publicListGetUserViewModelBy(intscoreFilter,stringfilter1="",stringfilter2){IQueryablequery=_context.Results.Where(i=>i.score==scoreFilter)).Include(x=>x.Target).Include(x=>x.Target.Results.ToList()).Include(x=>x.User).Include(x=>x.User.Targets.Where(i=>i.Language.ToLower().Contains(filter1)).ToList());如果(!string.IsNullOrEmpty(filter2)){query=query.Where(x=>x.Target.Language.ToLower().Contains(filter2));}returnquery.Select(x=>newUserViewModel(){otherProperty=x.User.otherProperty,targets=x.User.targets,results=x.Results}).ToList();}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
