Как лучше всего сравнить элемент элемента массива с вводом пользователя - PullRequest
0 голосов
/ 19 июня 2020

Я собираю 3 пользовательских ввода, которые я хотел бы запустить для этого массива, а затем вернуть назначенную информацию с помощью (есть еще 2, но не хочу засорять вопрос):

//variable to hold the return value from readline - set to 0
            int c1 = 0;
            //if that var is 0 go - do while loop - while var = 0  go
            if (c1 == 0)
            {
                while (c1 == 0)
                {
                    Console.WriteLine("Please enter a C# Course ID:\n 10 = Basic C# \n 11 = Advanced C# \n 12 = Complex C# \n Only the course ID is valid as an entry");
                    int ID;
                    //Readline - pass variable back for what was entered
                    bool isNumeric = int.TryParse(Console.ReadLine(), out ID);

                    //validation check as to what was entered ; i.e. >=10 <=12
                    if (ID == 10)
                    {
                        Console.WriteLine("You have chosen:\n 10 = Basic C#");
                        c1 = 10;
                    }
                    else if (ID == 11)
                    {
                        Console.WriteLine("You have chosen:\n 11 = Advanced C#");
                        c1 = 11;
                    }
                    else if (ID == 12)
                    {
                        Console.WriteLine("You have chosen:\n 12 = Complex C#");
                        c1 = 12;
                    }
                    //if var outside of range, hard set to 0
                    else if (ID >= 10 && ID <= 12)
                    {
                        Console.WriteLine("Enter a valid input between 10 and 12");
                    }
                }

Затем в идеале переменная c1 вставляется и запускается в foreach l oop или в чем-то подобном, чтобы выбрать правильный элемент массива.

Courses[] courses =
            {
                //C# Courses which can be chosen- (int courseID, int streamID, string courseName, new DateTime (YYYY/MM/DD))
                new Csharp(10, 1, "Basic C#", new DateTime(2020, 7, 19)),
                new Csharp(11, 2, "Advanced C#", new DateTime(2020, 8, 8)),
                new Csharp(12, 3, "Complex C#", new DateTime(2020, 7, 18)),
                //Java Courses that can be chosen
                new Java(20, 1, "Basic Java", new DateTime(2020, 10, 7)),
                new Java(21, 2, "Advanced Java", new DateTime(2020, 11, 14)),
                new Java(22, 3, "Complex Java", new DateTime(2020, 9, 26)),
                //Netwroking Courses that can be chosen
                new NetWorking(30, 1, "Basic Networking", new DateTime(2020, 12, 29)),
                new NetWorking(31, 2, "Advanced Networking", new DateTime(2021, 1, 15)),
                new NetWorking(32, 3, "Complex Networking", new DateTime(2020, 12, 13))
            };

Класс Courses настроен следующим образом:

public abstract class Courses
    {
        public DateTime CourseDate { get; set; }
        public int StreamID { get; private set; }
        public string CourseName { get; private set; }
        public int CourseID { get; private set; }
        public Courses(int courseID, int streamID, string courseName, DateTime courseDate)
        {
            this.CourseID = courseID;
            this.StreamID = streamID;
            this.CourseName = courseName;
            this.CourseDate = courseDate;
        }
    }

Главный вопрос - как сравнить c1 (ввод пользователя) с CourseID (первое число в элементе массива) . Еще раз спасибо заранее, извините за много вопросов!

1 Ответ

1 голос
/ 19 июня 2020

С Linq:

var course = courses.SingleOrDefault(x => x.CourseID == c1);

if (course == null){
   // No course found
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...