Note that if you have a filtered list, the filter needs to happen before the call to DefaultIfEmpty:
int firstMonth2 = months.Where( month => month.HasAnR() ).DefaultIfEmpty(1).First();
This is wrong:
int firstMonth2 = months.DefaultIfEmpty(1).First(month => month.HasAnR() );