我是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