Как я могу получить это, чтобы написать все фильмы, которые меньше или равны возрасту пользователей? - PullRequest
0 голосов
/ 21 сентября 2019

Я хочу, чтобы мой код выполнял поиск по словарю «Фильмы» и выводил любые фильмы с рейтингом ниже возраста пользователей, однако я очень плохо знаком с c # и мало знаком со словарями.Кто-нибудь знает, каким образом я мог бы решить эту проблему?Буду очень признателен.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CinemaTing2._0
{
    class Program
    {
        public void Age(string[] args)
        {
            Dictionary<string, int> Films = new Dictionary<string, int>();
            //U rated films
            Films.Add("Shrek", 1);
            Films.Add("Finding Nemo", 1);
            Films.Add("A Bugs Life", 1);
            Films.Add("Flushed Away", 1);
            Films.Add("Charlie And The Chocolate Factory", 1);
            //PG films
            Films.Add("The Lion King", 2);
            Films.Add("Kung Fu Panda 3", 2);
            Films.Add("Puss In Boots", 2);
            Films.Add("Home Alone", 2);
            Films.Add("How To Train Your Dragon", 2);
            //12+ rated films
            Films.Add("Spider Man", 12);
            Films.Add("Sherlock Holmes", 12);
            Films.Add("War Horse", 12);
            Films.Add("Hunger Games", 12);
            Films.Add("Captain America", 12);
            //16+ rated films
            Films.Add("Forrest Gump", 15);
            Films.Add("Step Brothers", 15);
            Films.Add("Die Hard", 15);
            Films.Add("Saving Private Ryan", 15);
            Films.Add("The Matrix", 15);
            //18+ rated films
            Films.Add("RoboCop", 18);
            Films.Add("Mad Max 2", 18);
            Films.Add("Kill Bill", 18);
            Films.Add("Predator", 18);
            Films.Add("Dawn Of The Dead", 18);

            Console.WriteLine("Welcome to my cinema booking system. Please enter your age: ");
            int i = 1;
            int userAge = int.Parse(Console.ReadLine());
            while (i == 1)
            {
                foreach (KeyValuePair<string, int> item in Films)
                {
                }
            }
        }
    }
}

1 Ответ

0 голосов
/ 21 сентября 2019

Linq - отличный инструмент для изучения взаимодействия со списками, словарями и т. Д.

Существует метод .Where(), который будет искать в коллекции и накладывать условие на каждую запись.

Вам нужно будет включить оператор using using System.Linq;

Следующее утверждение: Films.Where(record => record.Value <= 12) означает поиск по всем записям словаря и возврат мне списка записей, значение которых меньшеили равно 12.

В вашем случае 12 будет переменной, которая будет возрастом пользователя.

Затем мы можем выполнить цикл по этому списку и обработать его, как требуется.

foreach (KeyValuePair<string, int> film in Films.Where(record => record.Value <= 12))
{
    Console.WriteLine($"Film: {film.Key}");
}

https://repl.it/repls/DizzyCheeryAlphatest

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...