我是NHibernate的新手& LINQ。我有一段我认为可以优化的代码。请帮助我这样做。需要使用Nhibernate优化LINQ代码
foreach (var geography in geographyList.OrderBy(x => x.Name))
{
var introductionDateDetail = environment.IntroductionDateInfo
.IntroductionDateDetails
.OrderByDescending(x => x.ApplicationDate)
.FirstOrDefault(x => x.Geography.Id == geography.Id &&
x.VaccineDetail.Id == vaccineDetail.Id &&
x.MasterForecastInfo.Id == masterforecast.Id &&
x.ViewInfo.Id == viewInfoDetail.ViewInfo.Id);
}
for循环迭代可以约一千records.And因此LINQ语句也执行的许多倍。我们可以写一段代码,我们可以只执行一次LINQ语句吗?
这看起来像N + 1查询问题的情况下。地理和IntroductionDetails和IntroductionDetailsInfo之间是否有外键?然后,您可以使用'Fetch'方法在获取地理位置时切实加载这些介绍细节。如果不是 - 您可以始终执行一个查询以获取所有介绍详细信息,其中'geographyIds.Contains(x.Geography.Id)' – Pako
否Geography与IntroductionDetails和IntroductionDetailsInfo之间没有外键。请你能更具体地做一个查询来获得所有介绍细节吗? – user2299182