Linq 查询加载时间过长

问题描述 投票:0回答:0

我有以下 linq 查询 -

IQueryable<VaccinationClinic> clinics = _appDbContext.VaccinationClinics
                .Include(h => h.HealthBoard)
                .Include(c => c.ClinicType)
                .Include(v => v.VaccinationAvailableTo)
                .Include(p => p.AdministrativeLead).ThenInclude(pn => pn.Title)
                .Include(d => d.ResponsibleSupervisingClinician).ThenInclude(dr => dr.Title)
                .Include(d => d.ResponsibleSupervisingClinician).ThenInclude(dr => dr.ProfessionalBodyDetails)
                .Include(r => r.Designations)
                .Include(t => t.Training)
                .Include(a => a.AnnualFigures).AsQueryable();

我们对结果进行搜索,例如-

if (searchCriteria == SearchCriteria.Designated)
{
   clinics = clinics.Where(CheckDesignationIsActive(designationNumberOfDays));
   clinics = clinics.Where(CheckDesignationIsActivePart2(designationNumberOfDays));
   clinics = clinics.Where(sp => !sp.DedesignationDate.HasValue);
}

与-

private Expression<Func<VaccinationClinic, bool>> CheckDesignationIsActive(int desNumOfDays)
{
   return sp => sp.Designations.OrderByDescending(r => r.DesignatedAt).FirstOrDefault().DesignatedAt.AddYears(sp.Designations.OrderByDescending(r => r.DesignatedAt).FirstOrDefault().NumberOfYears) >= DateTime.Now;
}

private Expression<Func<VaccinationClinic, bool>> CheckDesignationIsActivePart2(int desNumOfDays)
{
   return sp => !((sp.Designations.OrderByDescending(r => r.DesignatedAt).FirstOrDefault().DesignatedAt.AddYears(sp.Designations.OrderByDescending(r => r.DesignatedAt).FirstOrDefault().NumberOfYears) > DateTime.Now) &&
                            (sp.Designations.OrderByDescending(r => r.DesignatedAt).FirstOrDefault().DesignatedAt.AddYears(sp.Designations.OrderByDescending(r => r.DesignatedAt).FirstOrDefault().NumberOfYears) <= DateTime.Now.AddDays(desNumOfDays)));
}

然后在最后-

 var clinicList = await clinics.AsSplitQuery().ToListAsync();
 return clinicList;

主要的 linq 查询在我们添加搜索条件之前需要时间加载,有没有办法加快它的速度?

c# asp.net-mvc performance linq asp.net-core
© www.soinside.com 2019 - 2024. All rights reserved.