using System.Collections.Generic;
static List<Pallet> pallets = new List<Pallet>();
public static void Main()
pallets.Add(new Pallet("A1", Convert.ToDateTime("05-01-2018"), 30));
pallets.Add(new Pallet("A2", Convert.ToDateTime("03-01-2018"), 40));
pallets.Add(new Pallet("B3", Convert.ToDateTime("04-01-2018"), 20));
pallets.Add(new Pallet("B5", Convert.ToDateTime("01-01-2018"), 25));
pallets.Add(new Pallet("C2", Convert.ToDateTime("02-01-2018"), 5));
Console.WriteLine("Linq:");
List<Pallet> oldestPalletsFirst1 = pallets.OrderBy(p => p.ManufactureDate).ToList();
DisplayPalletOrder(oldestPalletsFirst1);
Console.WriteLine("----");
Console.WriteLine("IComparable:");
DisplayPalletOrder(pallets);
private static void DisplayPalletOrder(List<Pallet> pallets)
foreach(var pallet in pallets)
Console.WriteLine(" Pallet: {0}, MfrDate: {1}", pallet.Code, pallet.ManufactureDate);
public class Pallet : IComparable<Pallet>
public string Code {get; set;}
public DateTime ManufactureDate {get; set;}
public int Remaining {get; set;}
public Pallet(string code, DateTime mfrDate, int initialCount)
this.ManufactureDate = mfrDate;
this.Remaining = initialCount;
public int CompareTo(Pallet other)
if ( other == null ) return -1;
if ( this.ManufactureDate > other.ManufactureDate) return 1;
if ( this.ManufactureDate < other.ManufactureDate) return -1;