using System.Collections.Generic;
static void Main(string[] args)
var smooshed = new List<PropsWithDates>();
PropsWithDates? currentThing = null;
for (var date = new LocalDate(2021, 09, 08); date < new LocalDate(2021, 09, 16); date = date.PlusDays(1))
if (currentThing is not null && pile.Equals(PileOfProps.Copy(currentThing)))
currentThing.DateMax = date;
currentThing = new PropsWithDates(pile)
smooshed.Add(currentThing);
foreach (var smashed in smooshed)
Console.WriteLine($"From {smashed.DateMin} to {smashed.DateMax}");
static PileOfProps propPooper() => new PileOfProps
public static PileOfProps Copy(PileOfProps pile) => new PileOfProps(pile);
public int A { get; set; }
public bool B { get; set; }
public char C { get; set; }
public decimal D { get; set; }
record PropsWithDates : PileOfProps
public PropsWithDates() : base() { }
public PropsWithDates(PileOfProps pile) : base(pile) { }
public LocalDate DateMin { get; set; }
public LocalDate DateMax { get; set; }