private void BuildPrices(FindDocument document, CatalogEntryDto.CatalogEntryRow entryRow, ISearchConfiguration configuration) { IPriceService instance = ServiceLocator.Current.GetInstance <IPriceService>(); CatalogKey catalogKey = new CatalogKey(entryRow); HashSet <Mediachase.Commerce.Currency> source1 = new HashSet <Mediachase.Commerce.Currency>(); HashSet <MarketId> source2 = new HashSet <MarketId>(); IFieldConfiguration <double?> field = null; foreach (IPriceValue catalogEntryPrice in instance.GetCatalogEntryPrices(catalogKey)) { HashSet <Mediachase.Commerce.Currency> currencySet = source1; Money unitPrice = catalogEntryPrice.UnitPrice; Mediachase.Commerce.Currency currency1 = unitPrice.Currency; if (currencySet.Add(currency1)) { ISearchConfiguration searchConfiguration = configuration; unitPrice = catalogEntryPrice.UnitPrice; Mediachase.Commerce.Currency currency2 = unitPrice.Currency; searchConfiguration.AddCurrency(currency2); } if (source2.Add(catalogEntryPrice.MarketId)) { configuration.AddMarket(catalogEntryPrice.MarketId); } ISearchConfiguration searchConfiguration1 = configuration; string name = "saleprice"; unitPrice = catalogEntryPrice.UnitPrice; Mediachase.Commerce.Currency currencyCode = (Mediachase.Commerce.Currency)unitPrice.Currency.CurrencyCode; MarketId marketId = (MarketId)catalogEntryPrice.MarketId.Value; ref IFieldConfiguration <double?> local = ref field; if (searchConfiguration1.TryGetPriceField(name, currencyCode, marketId, out local)) { unitPrice = catalogEntryPrice.UnitPrice; double amount = (double)unitPrice.Amount; double?nullable = field.GetValue(document); if (!nullable.HasValue || nullable.Value > amount) { field.SetValue(document, new double?(amount)); } } }