private static Order CreateOrder()
        {
            var p1 = new Product {ID = 1, Description = "p2", Price = 9};
            var p2 = new Product {ID = 2, Description = "p3", Price = 6};

            Order order = new VIPOrder
            {
                ID = 4,
                Description = "Order for John Doe. Use the nice giftwrap",
                OrderLines = new List<OrderLine>
                {
                    new OrderLine {ID = 5, Amount = 1, Product = p1},
                    new OrderLine {ID = 6, Amount = 10, Product = p2},
                }
            };

            return order;
        }
        public void Run()
        {
            var p1 = new Product {Description = "p1", Price = 1};
            var p2 = new Product {Description = "p2", Price = 2};
            var p3 = new Product {Description = "p3", Price = 3};
            var p4 = new Product {Description = "p4", Price = 4};
            var p5 = new Product {Description = "p5", Price = 5};

            var orders = new List<Order>
            {
                new Order
                {
                    OrderLines = new List<OrderLine>
                    {
                        new OrderLine
                        {
                            Amount = 5,
                            Product = p1
                        },
                        new OrderLine
                        {
                            Amount = 3,
                            Product = p4
                        }
                    }
                },
                new Order
                {
                    OrderLines = new List<OrderLine>
                    {
                        new OrderLine
                        {
                            Amount = 2,
                            Product = p2
                        }
                    }
                }
                ,
                new Order
                {
                    OrderLines = new List<OrderLine>
                    {
                        new OrderLine
                        {
                            Amount = 3,
                            Product = p3
                        },
                        new OrderLine
                        {
                            Amount = 1,
                            Product = p5
                        }
                    }
                }
            };
            int pageIndex = 2;
            int pageSize = 2;
            IEnumerable<Order> pagedOrders = orders
                .Skip((pageIndex - 1)*pageSize)
                .Take(pageSize);
        }
        public void Run()
        {
            var p1 = new Product {Description = "p1", Price = 1};
            var p2 = new Product {Description = "p2", Price = 2};
            var p3 = new Product {Description = "p3", Price = 3};
            var p4 = new Product {Description = "p4", Price = 4};
            var p5 = new Product {Description = "p5", Price = 5};

            var orders = new List<Order>
            {
                new Order
                {
                    OrderLines = new List<OrderLine>
                    {
                        new OrderLine
                        {
                            Amount = 5,
                            Product = p1
                        },
                        new OrderLine
                        {
                            Amount = 3,
                            Product = p4
                        }
                    }
                },
                new Order
                {
                    OrderLines = new List<OrderLine>
                    {
                        new OrderLine
                        {
                            Amount = 2,
                            Product = p2
                        }
                    }
                }
                ,
                new Order
                {
                    OrderLines = new List<OrderLine>
                    {
                        new OrderLine
                        {
                            Amount = 3,
                            Product = p3
                        },
                        new OrderLine
                        {
                            Amount = 1,
                            Product = p5
                        }
                    }
                }
            };

            var result = from o in orders
                from l in o.OrderLines
                group l by l.Product
                into p
                select new
                {
                    Product = p.Key,
                    Amount = p.Sum(x => x.Amount)
                };
        }