private static List <IPriceValue> OriginalPriceValues(this ProductContent productContent) { var validPrices = productContent.Prices() .Where(x => x.ValidFrom <= DateTime.Now && (x.ValidUntil == null || x.ValidUntil >= DateTime.Now)); var originalPrices = new List <IPriceValue>(); foreach (var marketPrices in validPrices.GroupBy(x => x.MarketId)) { foreach (var currencyPrices in marketPrices.GroupBy(x => x.UnitPrice.Currency)) { var topPrice = currencyPrices.OrderByDescending(x => x.UnitPrice).FirstOrDefault(); if (topPrice == null) { continue; } originalPrices.Add(topPrice); } } return(originalPrices); }