public IEnumerable <LeagueTableResult> GetAll() { IEnumerable <LeagueTable> GetLeagueTable(IEnumerable <GameResult> results) { return(results.GroupBy(r => r.TeamId).Select(g => new LeagueTable { TeamId = g.Key, TeamName = g.First().TeamName, Loss = g.Count(x => x.Result == ResultType.Loss), Win = g.Count(x => x.Result == ResultType.Win), Draw = g.Count(x => x.Result == ResultType.Draw), Points = g.Select(x => x.Result == ResultType.Loss ? 0 : (x.Result == ResultType.Draw ? 1 : 3)) .Sum() }).OrderByDescending(l => l.Points).ToList()); } var result = _gameResultReader.GetAll(); return(result.GroupBy(r => r.LeagueId) .Select(g => new LeagueTableResult { League = new League { Id = g.Key, Name = g.First().LeagueName }, LeagueTables = GetLeagueTable(g) })); }
public IEnumerable <League> GetAll() { var results = _gameResultReader.GetAll(); return(results.GroupBy(r => r.LeagueId).Select(g => new League { Id = g.Key, Name = g.First().LeagueName })); }