using System.Collections.Generic;
static void Main(string[] args)
var products = new List<Product>();
products.Add(new Product() { Id = 1, Name = "Coffee 1" });
products.Add(new Product() { Id = 2, Name = "Coffee 2" });
products.Add(new Product() { Id = 3, Name = "Coffee 3" });
products.Add(new Product() { Id = 4, Name = "Coffee 4" });
products.Add(new Product() { Id = 5, Name = "Coffee 5" });
products.Add(new Product() { Id = 6, Name = "Coffee 6" });
products.Add(new Product() { Id = 7, Name = "Coffee 7" });
products.Add(new Product() { Id = 8, Name = "Coffee 8" });
products.Add(new Product() { Id = 9, Name = "Coffee 9" });
var shop = new List<Stock>();
shop.Add(new Stock() { Product = products[0], Units = 150 });
shop.Add(new Stock() { Product = products[2], Units = 350 });
shop.Add(new Stock() { Product = products[3], Units = 444 });
shop.Add(new Stock() { Product = products[4], Units = 651 });
shop.Add(new Stock() { Product = products[5], Units = 389 });
shop.Add(new Stock() { Product = products[8], Units = 900 });
var warehouse = new List<Stock>();
warehouse.Add(new Stock() { Product = products[0], Units = 115 });
warehouse.Add(new Stock() { Product = products[1], Units = 325 });
warehouse.Add(new Stock() { Product = products[2], Units = 458 });
warehouse.Add(new Stock() { Product = products[5], Units = 365 });
warehouse.Add(new Stock() { Product = products[6], Units = 445 });
warehouse.Add(new Stock() { Product = products[8], Units = 145 });
var outOfStock = GetOutOfStock(products, shop, warehouse);
foreach(var item in outOfStock)
var top3ToReplenish = GetTop3ProductsToReplenish(products,shop,warehouse);
foreach(var item in top3ToReplenish)
public Product Product { get; set; }
public int Units { get; set; }
public int Id { get; set; }
public string Name { get; set; }