public virtual Subject SelectSubjectFromList() { _uiMessageFactory.SelectSubjectMessage(); var subjects = _wordManager.GetSubjects(); foreach (var item in subjects) { Console.WriteLine($"{item.Id} - {item.Name}"); } int input = 0; while (!int.TryParse(Console.ReadLine(), out input)) { _uiMessageFactory.WrongInputMessage(); int.TryParse(Console.ReadLine(), out input); } while (subjects.FirstOrDefault(subj => subj.Id == input) == null) { input = Convert.ToInt32(Console.ReadLine()); } return(subjects.First(sub => sub.Id == input)); }