可以帮助我优化以下LINQ语句。我正在使用NHibernate作为ORM。这句话需要一分多钟才能执行。它不应该花那么多时间。
var inValidIntroductionDates = environment.IntroductionDateInfo.IntroductionDateDetails
.OrderByDescending(x => x.ApplicationDate)
.Where(x => x.VaccineDetail.Id == vaccine.Id &&
x.ViewInfo.Id == viewInfoDetail.ViewInfo.Id &&
x.MasterForecastInfo.Id == scenarioId &&
x.IsIntroductionDateValid == false)
.ToList();
由于
答案 0 :(得分:1)
在Where
之前移动OrderByDescending
子句,以减少参与order by语句的记录数。喜欢
var inValidIntroductionDates = environment.IntroductionDateInfo.IntroductionDateDetails
.Where( x => x.VaccineDetail.Id == vaccine.Id &&
x.ViewInfo.Id == viewInfoDetail.ViewInfo.Id &&
x.MasterForecastInfo.Id == scenarioId &&
x.IsIntroductionDateValid == false)
.OrderByDescending(x => x.ApplicationDate)
.ToList();
您也可以更改
x.IsIntroductionDateValid == false
到
!x.IsIntroductionDateValid
但这不会改善表现。只是一个可读性选项。
答案 1 :(得分:1)
var inValidIntroductionDates = environment.IntroductionDateInfo.IntroductionDateDetails.Where(
x => x.VaccineDetail.Id == vaccine.Id && x.ViewInfo.Id == viewInfoDetail.ViewInfo.Id && x.MasterForecastInfo.Id == scenarioId && x.IsIntroductionDateValid == false).OrderByDescending(x => x.ApplicationDate).ToList();
首先找到,然后订购
答案 2 :(得分:1)
需要考虑的一些事项:
请告诉我们重点是什么。
此致 迈克尔