using System.Collections.Generic;
public int CustomerID { get; set; }
public String FirstName { get; set; }
public String LastName { get; set; }
public String Email { get; set; }
public Customer(int id, String fName, String lName, String email)
public int OrderID { get; set; }
public DateTime OrderDate { get; set; }
public String ShippingMethod { get; set; }
public String OrderStatus { get; set; }
public Customer OrderedBy { get; set; }
public List<Product> OrderItems { get; set; }
public Order(int ordId, DateTime ordDate, String shipMethod, String ordStatus, Customer cust)
ShippingMethod = shipMethod;
OrderItems = new List<Product>();
public void addProduct(Product prod)
public double calcOrderTotal()
var itemVar = OrderItems.Sum(i => i.calcProductTotal());
public double calcShipping()
public int ProdID { get; set; }
public String Name { get; set; }
public double Price { get; set; }
public String Image { get; set; }
public String Desc { get; set; }
public int QtyOrdered { get; set; }
public double Weight { get; set; }
public Product(int id, string name, double price)
public Product(int id, string name, double price, string image, string desc)
public Product(int id, string name, double price, int qty, double weight) : this(id, name, price)
public double calcProductTotal()
return Price * QtyOrdered;
public static void Main()
List<Order> orders = setupData2();
var orders2 = (from o in orders
where o.OrderStatus == "Placed"
let total = p.Price * p.QtyOrdered
select new { o.OrderID, o.OrderedBy.FirstName, o.OrderedBy.LastName, Total = total });
foreach (var x in orders2)
Console.WriteLine("Order Id: " + x.OrderID + " Ordered by: " + x.FirstName + " " + x.LastName);
Console.WriteLine("Price for all Orders: " + totalOrders);
Console.WriteLine("Price for all Orders other: " + orders2.Sum(x => x.Total));
Console.WriteLine("------ Another way to do it -----");
var orders3 = orders.Where(x => x.OrderStatus == "Placed").OrderBy(y => y.OrderDate).ToList();
foreach (Order x in orders3)
Console.WriteLine("Order Id: " + x.OrderID + " Ordered by: " + x.OrderedBy.FirstName + " " + x.OrderedBy.LastName);
Console.WriteLine("Price for all Orders3 : " + orders3.Sum(x => x.calcOrderTotal()) );
static List<Order> setupData2()
List<Order> orders = new List<Order>();
Customer c1 = new Customer(14, "Mary", "Smith", "msmith@gmail.com");
Customer c2 = new Customer(25, "Andy", "Johnson", "andy.johnson@gmail.com");
Customer c3 = new Customer(42, "Tim", "Clark", "tc@tc.net");
Customer c4 = new Customer(125, "Roger", "Wilson", "rogerw@zmail.com");
Order ord4 = new Order(48, DateTime.Now.Subtract(new TimeSpan(4, 1, 1, 1, 1)), "Ground", "Placed", c4);
ord4.addProduct(new Product(129, "Do It Yourself Tornado Kit", 225.50, 4, 85.5));
ord4.addProduct(new Product(421, "Catcus Costume", 48.70, 2, 18.85));
ord4.addProduct(new Product(400, "Anvil", 338.70, 1, 384.25));
ord4.addProduct(new Product(455, "Jet Propelled Unicycle", 556.40, 4, 328.35));
Order ord5 = new Order(55, DateTime.Now.Subtract(new TimeSpan(1, 1, 1, 1, 1)), "Ground", "Placed", c1);
ord5.addProduct(new Product(124, "Earth Quake Pills", 145.50, 3, 2.25));
ord5.addProduct(new Product(129, "Do It Yourself Tornado Kit", 225.50, 1, 85.5));
ord5.addProduct(new Product(327, "Giant Mouse Trap", 88.70, 4, 26.50));
ord5.addProduct(new Product(400, "Anvil", 338.70, 2, 384.25));
ord5.addProduct(new Product(425, "Iron Bird Seed", 27.70, 1, 5.85));