I need to sort some soccer standings. My problem is how to sort in the right order.
Sortorder:
- Points DESC
- Approximation match
- Goal difference DESC
- Goals scored DESC
- Goals against
Input:
TeamName – Points – GoalsScored – GoalsAgainst
- Team 1 – 1 – 4 – 7
- Team 2 – 5 – 8 – 6
- Team 3 – 1 – 2 – 10
- Team 4 – 8 – 12 – 5
- Team 5 – 5 – 7 – 4
…
Match #4 – Team 5 – Team 2 — 1-2
Match #7 – Team 1 – Team 3 — 3-3
…
Output:
TeamName – Points – GoalsScored – GoalsAgainst
- Team 4 – 8 – 12 – 5
- Team 2 – 5 – 8 – 6
- Team 5 – 5 – 7 – 4
- Team 1 – 1 – 4 – 7
- Team 3 – 1 – 2 – 10
Because Team 2 won over Team 5 they ends up at 2nd place.
Because Team 1 draw against Team 3, they ends up at 4. place, with a better goal difference.
public class Standing
{
public Team Team { get; set; }
public int? MatchesPlayed { get; set; }
public int? GoalsScored { get; set; }
public int? GoalsAgainst { get; set; }
public int? Points { get; set; }
}
public class Match
{
public int MatchID { get; set; }
public DateTime? PlayTime { get; set; }
public Team HomeTeam { get; set; }
public Team AwayTeam { get; set; }
public int? HomeScore { get; set; }
public int? AwayScore { get; set; }
}
public class Pool
{
public int PoolID { get; set; }
public string PoolName { get; set; }
public DateTime? StartTime { get; set; }
public List<Team> Teams { get; set; }
public List<Match> Matches { get; set; }
public List<Standing> Standings { get; set; }
}
Can you use .NET 3.5? It’s pretty straightforward to use the LINQ
OrderByandThenByextension methods for this.