using System.Collections.Generic;
public static void Main()
ITeamRepository teamRepository = new TeamRepository();
Console.WriteLine("1. List out the location and team name of all teams, sorted by location alphabetically.");
Console.WriteLine("---------------------------------------------------------------------------------------");
SortedByLocation(teamRepository);
Console.WriteLine("---------------------------------------------------------------------------------------");
Console.WriteLine("2. List all players under the age of 26 grouped by team.");
Console.WriteLine("---------------------------------------------------------------------------------------");
YoungestPLayersOnTeam(teamRepository);
Console.WriteLine("---------------------------------------------------------------------------------------");
Console.WriteLine("3. Print the team name & first and last name of the oldest player on each team.");
Console.WriteLine("---------------------------------------------------------------------------------------");
OldestPlayersOnTeam(teamRepository);
Console.WriteLine("---------------------------------------------------------------------------------------");
private static void OldestPlayersOnTeam(ITeamRepository teamRepository)
List<Team> teamList = teamRepository.GetTeams();
for (int i = 0; i < teamList.Count; i++)
Console.WriteLine(team.Location + " " + team.Name);
var olderPlayers = new List<Player>() { team.Players[0] };
for (int x = 0; x < team.Players.Count; x++)
Player player = team.Players[x];
if (player.Age > olderPlayers[0].Age)
olderPlayers = new List<Player>() { player };
else if (player.Age == olderPlayers[0].Age && olderPlayers[0].Id != player.Id)
olderPlayers.Add(player);
foreach (var player in olderPlayers)
Console.WriteLine("\t" + player.FirstName + " " + player.LastName + " " + player.Age);
private static void SortedByLocation(ITeamRepository teamRepository)
List<Team> teamList = teamRepository.GetTeams();
teamList.Sort((x, y) => string.Compare(x.Location, y.Location));
for (int i = 0; i < teamList.Count; i++)
Console.WriteLine("Team Name: {0} ---- Team Location: {1}", team.Name, team.Location);
private static void YoungestPLayersOnTeam(ITeamRepository teamRepository)
foreach (var team in teamRepository.GetTeams())
Console.WriteLine(team.Location + " " + team.Name);
foreach (var player in team.Players)
Console.WriteLine("\t" + player.FirstName + " " + player.LastName + " " + player.Age);
interface ITeamRepository
class TeamRepository : ITeamRepository
Location = "North Carolina",
Players = new List<Player>(){
Location = "CheatingVille",
Players = new List<Player>(){
Players = new List<Player>(){
public List<Team> GetTeams()
return _table.QueryTeams();
public Team GetTeam(int Id)
return this.GetTeams().Find(x => x.Id == Id);
private readonly List<Team> _teams;
this._teams = new List<Team>();
public void AddTeam(Team team)
public List<Team> QueryTeams()
public int Id { get; set; }
public string Name { get; set; }
public string Location { get; set; }
public List<Player> Players { get; set; }
public int Id { get; set; }
public int Age { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }