static void Main() { Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; DataMapper db = new DataMapper(); IEnumerable <Category> categories = db.GetCategories(); IEnumerable <Product> products = db.GetProducts(); IEnumerable <Order> orders = db.GetOrders(); // Names of the 5 most expensive products IEnumerable <string> mostExpensive = products .OrderByDescending(p => p.UnitPrice) .Take(5) .Select(p => p.ProductName); Console.WriteLine(string.Join(Environment.NewLine, mostExpensive)); Console.WriteLine(new string('-', 10)); // Number of products in each category var second = products .GroupBy(p => p.ProductCategory) .Select(grp => new { Category = categories.First(c => c.CategoryID == grp.Key).CategoryName, Count = grp.Count() }) .ToList(); foreach (var item in second) { Console.WriteLine("{0}: {1}", item.Category, item.Count); } Console.WriteLine(new string('-', 10)); // The 5 top products (by order quantity) var third = orders .GroupBy(o => o.OrderProductID) .Select(grp => new { Product = products.First(p => p.ProductID == grp.Key).ProductName, Quantities = grp.Sum(grpgrp => grpgrp.Quantity) }) .OrderByDescending(q => q.Quantities) .Take(5); foreach (var item in third) { Console.WriteLine("{0}: {1}", item.Product, item.Quantities); } Console.WriteLine(new string('-', 10)); // The most profitable category var category = orders .GroupBy(o => o.OrderProductID) .Select(g => new { catId = products.First(p => p.ProductID == g.Key).ProductCategory, price = products.First(p => p.ProductID == g.Key).UnitPrice, quantity = g.Sum(p => p.Quantity) }) .GroupBy(gg => gg.catId) .Select(grp => new { category_name = categories.First(c => c.CategoryID == grp.Key).CategoryName, total_quantity = grp.Sum(g => g.quantity * g.price) }) .OrderByDescending(g => g.total_quantity) .First(); Console.WriteLine("{0}: {1}", category.category_name, category.total_quantity); }
static void Main() { Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; DataMapper db = new DataMapper(); IEnumerable<Category> categories = db.GetCategories(); IEnumerable<Product> products = db.GetProducts(); IEnumerable<Order> orders = db.GetOrders(); // Names of the 5 most expensive products IEnumerable<string> mostExpensive = products .OrderByDescending(p => p.UnitPrice) .Take(5) .Select(p => p.ProductName); Console.WriteLine(string.Join(Environment.NewLine, mostExpensive)); Console.WriteLine(new string('-', 10)); // Number of products in each category var second = products .GroupBy(p => p.ProductCategory) .Select(grp => new { Category = categories.First(c => c.CategoryID == grp.Key).CategoryName, Count = grp.Count() }) .ToList(); foreach (var item in second) { Console.WriteLine("{0}: {1}", item.Category, item.Count); } Console.WriteLine(new string('-', 10)); // The 5 top products (by order quantity) var third = orders .GroupBy(o => o.OrderProductID) .Select(grp => new { Product = products.First(p => p.ProductID == grp.Key).ProductName, Quantities = grp.Sum(grpgrp => grpgrp.Quantity) }) .OrderByDescending(q => q.Quantities) .Take(5); foreach (var item in third) { Console.WriteLine("{0}: {1}", item.Product, item.Quantities); } Console.WriteLine(new string('-', 10)); // The most profitable category var category = orders .GroupBy(o => o.OrderProductID) .Select(g => new { catId = products.First(p => p.ProductID== g.Key).ProductCategory, price = products.First(p => p.ProductID == g.Key).UnitPrice, quantity = g.Sum(p => p.Quantity) }) .GroupBy(gg => gg.catId) .Select(grp => new { category_name = categories.First(c => c.CategoryID == grp.Key).CategoryName, total_quantity = grp.Sum(g => g.quantity * g.price) }) .OrderByDescending(g => g.total_quantity) .First(); Console.WriteLine("{0}: {1}", category.category_name, category.total_quantity); }
public static void Main() { Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; var dataMapper = new DataMapper(); var categories = dataMapper.GetCategories(); var products = dataMapper.GetProducts(); var orders = dataMapper.GetOrders(); // Print names of the 5 most expensive products var firstFiveMostExpensiveProducts = products .OrderByDescending(p => p.UnitPrice) .Take(5) .Select(p => p.Nome); Console.WriteLine(string.Join(Environment.NewLine, firstFiveMostExpensiveProducts)); Console.WriteLine(new string('-', 10)); // Print number of products in each category var productsInEachCategory = products .GroupBy(p => p.CategoryId) .Select(group => new { Category = categories.First(cat => cat.Id == group.Key).Name, Count = group.Count() }) .ToList(); foreach (var product in productsInEachCategory) { Console.WriteLine("{0}: {1}", product.Category, product.Count); } Console.WriteLine(new string('-', 10)); // Print the 5 top products (by Order quantity) var topFiveProductsByOrderQuantity = orders .GroupBy( order => order.ProductId) .Select(group => new { Product = products.First(p => p.Id == group.Key).Nome, Quantities = group.Sum(order => order.Quantity) }) .OrderByDescending(q => q.Quantities) .Take(5); foreach (var item in topFiveProductsByOrderQuantity) { Console.WriteLine("{0}: {1}", item.Product, item.Quantities); } Console.WriteLine(new string('-', 10)); // Print the most profitable category var category = orders .GroupBy(id => id.ProductId) .Select(group => new { catId = products.First(p => p.Id == group.Key).CategoryId, price = products.First(p => p.Id == group.Key).UnitPrice, quantity = group.Sum(p => p.Quantity) }) .GroupBy(group => group.catId) .Select(group => new { CategoryName = categories.First(c => c.Id == group.Key).Name, TotalQuantity = group.Sum(g => g.quantity * g.price) }) .OrderByDescending(g => g.TotalQuantity) .First(); Console.WriteLine("{0}: {1}", category.CategoryName, category.TotalQuantity); }