public Airline GetFavoriteAirline(Person person) { var countDict = new Dictionary <string, int>(); foreach (var a in Airlines) { countDict.Add(a.AirlineCode, 0); } foreach (var t in person.Trips) { foreach (var p in t.PlanItems) { var f = p as Flight; if (f != null) { countDict[f.Airline.AirlineCode]++; } } } var max = -1; string favoriteAirlineCode = null; foreach (var record in countDict) { if (max < record.Value) { favoriteAirlineCode = record.Key; max = record.Value; } } return(Airlines.Single(a => a.AirlineCode.Equals(favoriteAirlineCode))); }