using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using automatically_implemented_properties; namespace automatically_implemented_properties { class Program { static void Main(string[] args) { Product[] products = { new Product {Name = "Kayak", Category = "Watersports", Price = 275M}, new Product {Name = "Lifejacket", Category = "Watersports", Price = 48.95M}, new Product {Name = "Soccer ball", Category = "Soccer", Price = 19.50M}, new Product {Name = "Corner flag", Category = "Soccer", Price = 34.95M} }; // define the array to hold results Product[] results = new Product[3]; // sort the contents of the array Array.Sort(products, (item1, item2) => { return Comparer.Default.Compare(item1.Price, item2.Price); }); // get the first three items in the array as the results Array.Copy(products, results, 3); // print out the name foreach (Product p in results) { Console.WriteLine("Item: {0}, Cost: {1}", p.Name, p.Price); } int count = 0; // print the name } } public static class MyExtensionMethod { public static decimal TotalPrices(this IEnumerable productEnum) { decimal total = 0; foreach (Product prod in productEnum) { total += prod.Price; } return total; } public static IEnumerable FilterByCategory(this IEnumerable productEnum, string categoryParam) { foreach (Product prod in productEnum) { if (prod.Category == categoryParam) { yield return prod; } } } public static IEnumerable Filter(this IEnumerable productEnum, Func selectorParam) { foreach (Product prod in productEnum) { if (selectorParam(prod)) { yield return prod; } } } } }