Je suis en train de construire une expression de type Expression<Func<Project, bool>>
qui renvoie le bon IQueryable<Project>
de la base de données. IQueryable<Project>
a une collection imbriquée de SubProjects
que je voudrais filtrer aussi bien. Cela ressemble à ceci:Comment puis-je filtrer les éléments imbriqués de IQueryable <T>?
Est-ce que cela peut être fait avec un appel à la base de données?
Par exemple:
Expression<Func<Project, bool>> projectFilter = FilterEnabled();
projectFilter = projectFilter.And(GetProjectsByOrganization());
var projectData = GetProjectsAsQueryable(projectFilter); //returns correct projects
C'est ce que je voudrais faire:
Expression<Func<Project, bool>> projectFilter = FilterEnabled();
projectFilter = projectFilter.And(GetProjectsByOrganization())
.And(GetSubProjectsByStartDate());
var projectData = GetProjectsAsQueryable(projectFilter); //returns correct projects and the filtered sub projects by start date
Le GetProjectsByOrganization
se présente comme suit
public Expression<Func<Project, bool>> GetProjectByOrganization()
{
var organizationIDs = new List<Guid>();
if (FilterCriteria.OrganiazaitonId != null)
organizationIDs = OrganizationRepository.GetParentAndChildrenOrganizationIds(FilterCriteria.OrganiazaitonId.Value).ToList();
//...
return prj => FilterCriteria.OrganiazaitonId == null || organizationIDs.Contains(prj.OrganizationID.Value);
}
Comment puis-je ajouter un Expression<Func<SubProject, bool>>
à la filtre? Si non quelles alternatives ai-je?
Je ne pense pas que cela fonctionnera avec EntityFramework –
@ Johnny5 Je n'ai pas encore essayé mais pourquoi? Y a-t-il un autre moyen de le faire? –