namespace WebEMSim { public class Table { private List _teams; private Sorter _sorter = new Sorter(); public Dictionary Rankings { get => GetTable().Select((team, index) => new {team, index}).ToDictionary(x => x.index, x => x.team); } public Table(List teams) { _teams = new(teams); } public void AddTeam(Team team) { _teams.Add(team); } public List GetTable() { _teams.Sort(_sorter); return _teams; } public List GetTruncatedTable(int cutoff) { List sortedTeams = new(GetTable()); sortedTeams.RemoveRange(cutoff, sortedTeams.Count - cutoff); return sortedTeams; } /*public DataTable AsDataTable() { DataTable dataTable = new DataTable(); dataTable.Clear(); dataTable.Columns.Add("Name"); dataTable.Columns.Add("Wins"); dataTable.Columns.Add("Losses"); dataTable.Columns.Add("Draws"); dataTable.Columns.Add("For"); dataTable.Columns.Add("Against"); dataTable.Columns.Add("Goal Diff"); dataTable.Columns.Add("World Rank"); dataTable.Columns.Add("Points"); dataTable.Columns.Add("Group"); List teams = GetTable(); foreach (Team team in teams) { dataTable.Rows.Add([ team.Name, team.Wins, team.Losses, team.Draws, team.For, team.Against, team.GoalDelta, team.WorldRank, team.Points, Helpers.NumberToLetter(team.Group) ]); } return dataTable; }*/ private class Sorter : IComparer { public int Compare(Team? a, Team? b) { int rank = b.Points - a.Points; if(rank == 0) { rank = b.GoalDelta - a.GoalDelta; } if(rank == 0) { rank = b.For - a.For; } return rank; } } } }