static void Main(string[] args) { // Create two Dictionary vars to hold info for menu and data // Top-level menu options Dictionary <string, string> actionChoices = new Dictionary <string, string>(); actionChoices.Add("search", "Search"); actionChoices.Add("list", "List"); // Column options Dictionary <string, string> columnChoices = new Dictionary <string, string>(); columnChoices.Add("core competency", "Skill"); columnChoices.Add("employer", "Employer"); columnChoices.Add("location", "Location"); columnChoices.Add("position type", "Position Type"); columnChoices.Add("all", "All"); Console.WriteLine("Welcome to LaunchCode's TechJobs App!"); // Allow user to search/list until they manually quit with ctrl+c while (true) { string actionChoice = GetUserSelection("View Jobs", actionChoices); if (actionChoice.Equals("list")) { string columnChoice = GetUserSelection("List", columnChoices); if (columnChoice.Equals("all")) { PrintJobs(JobData.FindAllJobs()); } else { List <string> results = JobData.FindColumnValues(columnChoice); results.Sort(); Console.WriteLine("\n*** All " + columnChoices[columnChoice] + " Values ***"); foreach (string item in results) { Console.WriteLine(item); } } } else // choice is "search" { // How does the user want to search (e.g. by skill or employer) string columnChoice = GetUserSelection("Search", columnChoices); // What is their search term? Console.WriteLine("\nSearch term: "); string searchTerm = Console.ReadLine(); List <Dictionary <string, string> > searchResults; // Fetch results if (columnChoice.Equals("all")) { searchResults = JobData.FindByValue(searchTerm); PrintJobs(searchResults); } else { searchResults = JobData.FindByColumnAndValue(columnChoice, searchTerm); PrintJobs(searchResults); } } } }