I have a simple method to calculate the growth between items in a list. Something strange is happening where the first and second dump will show different results for the first item.
Good 1000/1300/0.3.
Bad 1700/1300/-0.23.
I'm really stumped, can anyone help?
void Main()
{
List<TestItem> items = new()
{
new() { EndDate = new DateTime(2020, 3, 31), CloseValue = 1300M },
new() { EndDate = new DateTime(2020, 6, 30), CloseValue = 1600M },
new() { EndDate = new DateTime(2020, 7, 31), CloseValue = 1700M },
};
var openValue = 1000M;
var completeItems =
items.Select(x =>
{
var item = new TestItem
{
EndDate = x.EndDate,
OpenValue = openValue,
CloseValue = x.CloseValue,
};
openValue = item.CloseValue;
return item;
});
completeItems.Dump();
completeItems.Dump();
}
class TestItem
{
public DateTime EndDate { get; set; }
public decimal OpenValue { get; set; }
public decimal CloseValue { get; set; }
public decimal Growth => (OpenValue == 0) ? 0 : (CloseValue - OpenValue) / OpenValue;
}