Я новичок в NHibernate & LINQ. У меня есть фрагмент кода, который, я думаю, можно оптимизировать. Пожалуйста, помогите мне сделать это.Нужно оптимизировать код LINQ с помощью Nhibernate
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 может перебирать до тысячи записей. И поэтому оператор LINQ также выполняется много раз. Можем ли мы написать фрагмент кода, где мы можем выполнить оператор LINQ только один раз?
Это выглядит как случай N + 1 проблема запроса. Есть ли внешний ключ между Geography и IntroductionDetails и IntroductionDetailsInfo? Затем вы можете использовать метод «Fetch», чтобы охотно загружать эти сведения о вводе при получении географических данных. Если нет - вы всегда можете сделать один запрос, чтобы получить все сведения о вступлении, где 'geographyIds.Contains (x.Geography.Id)' – Pako
Нет никаких внешних ключей между Geography и IntroductionDetails и IntroductionDetailsInfo. Пожалуйста, можете быть более конкретным при выполнении одного запроса, чтобы получить все сведения о вступлении? – user2299182