0

私は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 ループは、約 1000 レコードまで繰り返される場合があります。したがって、LINQ ステートメントもその回数だけ実行されます。LINQ ステートメントを 1 回だけ実行できるコードを記述できますか?

4

1 に答える 1

0

次のようなことを試すことができます:

var geographiesId = geographyList.Select(g => g.Id);
var introductionDetails = environment.IntroductionDateInfo
                                  .IntroductionDateDetails
                                  .OrderByDescending(x => x.ApplicationDate)
                                  .FirstOrDefault(x => geographiesId.Contains(x.Geography.Id) && 
                                                       x.VaccineDetail.Id == vaccineDetail.Id &&
                                                       x.MasterForecastInfo.Id == masterforecast.Id && 
                                                       x.ViewInfo.Id == viewInfoDetail
于 2013-05-15T13:08:31.773 に答える