public string SpokenCelestialList(List <Celestial> celestials) { string script = string.Empty; var celestialsByCategory = celestials.GroupBy(c => c.Classification) .ToDictionary(grp => grp.Key, grp => grp.ToList()); int counter = 0; foreach (var item in celestialsByCategory) { counter++; if (counter == celestialsByCategory.Count() && celestialsByCategory.Count() > 1) { script += $"{_andPhrase} "; } string pluralized = item.Value.Count() == 1 ? string.Empty : _pluralPhrase; script += $"{item.Value.Count()} {_celestialValues.NameFromClassification(item.Key)}{pluralized}, "; } return(script); }
internal static string LongClassification(this Celestial celestial, CelestialValues values) { return(values.NameFromClassification(celestial.Classification)); }