public async Task<bool> LoadTeamDataAsync(PlayersContextViewModel context, string cachedJson = "") { List<TeamModel> teams; if (string.IsNullOrEmpty(cachedJson)) { var dataContext = new DataContext(); var svcResult = string.Empty; svcResult = await dataContext.GetTeamsAsync(context.SelectedYearId); if (svcResult == null) { return false; } //no results message //TeamsDataString = svcResult; teams = JsonConvert.DeserializeObject<List<TeamModel>>(svcResult); } else { teams = JsonConvert.DeserializeObject<List<TeamModel>>(cachedJson); } var groupedItems = from team in teams orderby team.Location select new PlayersTeamsViewModel { FirstLetter = team.Location.Substring(0, 1), LineOne = team.GetDisplayName(), LineTwo = team.GetDetail(), TeamId = team.TeamId } into list group list by list.FirstLetter into listByYear select new KeyedList<string, PlayersTeamsViewModel>(listByYear); TeamItems.Clear(); foreach (var viewModelItem in groupedItems) { TeamItems.Add(viewModelItem); } return true; }