using System.Collections.Generic;
public static void Main()
GetTeams().ForEach((x) => table.AddTeam(x));
repo = new TeamRepository(table);
Console.WriteLine("something happened!!!");
var data = repo.GetTeams();
Console.WriteLine("Teams and Locations:");
var teamsSortedByLoc = data.OrderBy(t => t.Location);
foreach (var team in teamsSortedByLoc)
Console.WriteLine(String.Format("Name: {0}, Location: {1}", team.Name, team.Location));
Console.WriteLine("=========================================" + Environment.NewLine);
var players = data.OrderBy(t => t.Name).SelectMany(x => x.Players).Where(x => x.Age < 26);
Console.WriteLine("Players under 26 years old:");
foreach (var player in players)
Console.WriteLine(String.Format("Name: {0}, Age: {1}", player, player.Age));
Console.WriteLine("=========================================" + Environment.NewLine);
Console.WriteLine("Oldest Player per Team:");
var teamsSortedByName = data.OrderBy(t => t.Name);
foreach (var team in teamsSortedByName)
Console.WriteLine(String.Format(
"Team: {0}, Name: {1}", team.Name, team.Players.OrderByDescending(x => x.Age).FirstOrDefault()));
private static List<Team> GetTeams()
var teams = new List<Team>() {
Location = "North Carolina",
Players = new List<Player>(){
new Player{ FirstName="Cam", LastName="Newton", Age=24},
new Player{ FirstName="Greg", LastName="Olsen", Age=26},
new Player{ FirstName="Luke", LastName="Kuechly", Age=32},
Location = "New England",
Players = new List<Player>(){
new Player{ FirstName="Tom", LastName="Brady", Age=39},
new Player{ FirstName="Rob", LastName="Gronkowski", Age=27},
new Player{ FirstName="Danny", LastName="Amendola", Age=23}
Players = new List<Player>(){
new Player{ FirstName="Richard", LastName="Sherman", Age=29},
new Player{ FirstName="Russell", LastName="Wilson", Age=25},
new Player{ FirstName="Doug", LastName="Baldwin", Age=28}
interface ITeamRepository
class TeamRepository : ITeamRepository
public TeamRepository(Table table)
public List<Team> GetTeams()
return _table.QueryTeams();
private readonly List<Team> _teams;
this._teams = new List<Team>();
public void AddTeam(Team team)
team.Id = ++this._nextTeamId;
public List<Team> QueryTeams()
public Team GetTeam(int Id)
return _teams.Find(t => t.Id == Id);
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 string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public override string ToString()
return FirstName + " " + LastName;