static void Main(string[] args) { Sale[] sales = new Sale[] { new Sale("Kiwi", "Fred", 2.4, 3.6), new Sale("Pear", "Mike", 2.2, 9.8), new Sale("Apple", "Henry", 1.5, 12.2), new Sale("Watermellon", "Sam", 3.4, 5.4), new Sale("Mango", "Felicia", 4.3, 2.1), new Sale("Banana", "Wilson", 3.4, 5.0), new Sale("Strawberry", "Josh", 3.4, 19.0), }; int[] numbers = new int[] { 1, 2, 1, 4, 5, 9, 7, 8, 9 }; Console.WriteLine("MaxOverPre"); List <int> maxOverPNum = numbers.MaxOverPrevious().ToList(); maxOverPNum.ForEach(e => Console.WriteLine(e)); List <Sale> maxOverPSale = sales.MaxOverPrevious(s => s.Profit).ToList(); maxOverPSale.ForEach(e => Console.WriteLine(e)); Console.WriteLine("\nMinOverPreNum"); List <int> minOverPreNum = numbers.MaxOverPrevious(s => - s).ToList(); minOverPreNum.ForEach(e => Console.WriteLine(e)); Console.WriteLine("\nLocalMaxima"); List <int> localMaxNum = numbers.LocalMaxima().ToList(); localMaxNum.ForEach(e => Console.WriteLine(e)); Console.WriteLine("\nsaleMaxima"); List <Sale> localMaxSale = sales.LocalMaxima(s => (int)s.SellingPrice).ToList(); localMaxSale.ForEach(e => Console.WriteLine(e)); Console.WriteLine("\nLocalMinimaNum"); List <int> localMinimaNum = numbers.LocalMaxima(s => - s).ToList(); localMinimaNum.ForEach(e => Console.WriteLine(e)); Console.WriteLine("\nAtLeastK"); Console.WriteLine(sales.AtLeastK(3, s => s.SellingPrice < 5.5)); Console.WriteLine(numbers.AtLeastK(3, s => s < 5)); Console.WriteLine("\nAtLeastHlaf"); Console.WriteLine(sales.AtLeastHalf(s => s.SellingPrice < 5.3)); Console.WriteLine(numbers.AtLeastHalf(s => s < 4)); Console.ReadKey(); }