【发布时间】:2023-04-08 07:09:01
【问题描述】:
我正在构建一个Expression<Func<Project, bool>> 类型的表达式,它会从数据库中返回正确的IQueryable<Project>。 IQueryable<Project> 有一个嵌套的 SubProjects 集合,我也想过滤它。它看起来像这样
这可以通过一次调用数据库来完成吗?
例如:
Expression<Func<Project, bool>> projectFilter = FilterEnabled();
projectFilter = projectFilter.And(GetProjectsByOrganization());
var projectData = GetProjectsAsQueryable(projectFilter); //returns correct projects
这是我想做的:
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
GetProjectsByOrganization如下
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);
}
如何将Expression<Func<SubProject, bool>> 添加到过滤器?如果没有,我还有什么选择?
【问题讨论】:
标签: c# linq iqueryable