public async Task<bool> LoadTeamResultsDataAsync(TeamsContextViewModel context, string cachedJson = "") { List<TeamsResultModel> items; if (string.IsNullOrEmpty(cachedJson)) { var dataContext = new DataContext(); var svcResult = string.Empty; svcResult = await dataContext.GetTeamResultsAsync(context.SelectedTeamId, context.SelectedOpponentId); if (svcResult == null) { return false; } //no results message //TeamsResultsDataString = svcResult; items = JsonConvert.DeserializeObject<List<TeamsResultModel>>(svcResult); } else { items = JsonConvert.DeserializeObject<List<TeamsResultModel>>(cachedJson); } var groupedItems = from item in items orderby item.Year descending select new TeamsResultsViewModel { Year = item.Year, Games = (int.Parse(item.Wins) + int.Parse(item.Losses)).ToString(), Team = item.Team, Opponent = item.Opponent, Wins = item.Wins, Losses = item.Losses, RunsFor = item.RunsFor, RunsAgainst = item.RunsAgainst } into list group list by list.Year into listByYear select new KeyedList<string, TeamsResultsViewModel>(listByYear); TeamResultItems.Clear(); foreach (var viewModelItem in groupedItems) { TeamResultItems.Add(viewModelItem); } return true; }