static void Main(string[] args) { var dbContext = new CapitalCityDbContext(); const int numberToStudy = 10; IReviewManager <CapitalCity> reviewManager = new ReviewManager <CapitalCity>(numberToStudy, 20); ConsoleKeyInfo nextAction = new ConsoleKeyInfo(); while (nextAction.Key != ConsoleKey.X) { Console.Write("Press a key to [S]tudy, [T]est, or E[x]it"); var capitalCities = dbContext.CapitalCities; var studyCities = reviewManager.GetCurrent(capitalCities); nextAction = Console.ReadKey(); Console.WriteLine(); if (nextAction.Key == ConsoleKey.S) { foreach (var c in studyCities) { Console.WriteLine($"{c.Country}:\t{c.Capital}"); } } if (nextAction.Key == ConsoleKey.T) { var answers = new string[numberToStudy]; var index = 0; foreach (var c in studyCities) { Console.WriteLine($"{c.Country}"); answers[index] = Console.ReadLine(); index++; } var correctCount = reviewManager.ParseTestResults <string>(studyCities, answers, (a, c) => c.Capital.Trim() == a); Console.WriteLine($"Well done, you got {correctCount} correct"); } dbContext.SaveChanges(); } }