C # как взять определенные объекты из ilist

#c# #list

#c# #Список

Вопрос:

я составил список фильмов в зависимости от возраста. Если вы введете свой возраст 18 , вы сможете увидеть весь список. если ваш возраст меньше, вы увидите уменьшенный список в зависимости от того, какие из них соответствуют вашему возрасту.

Я создал ilist с названиями фильмов, но не знаю, как извлекать определенные фильмы из списка при его показе.

Вот мой код до сих пор:

 Console.Write("Hi, if you wish to see a movie please enter your age: ");

string AgeAsAString = Console.ReadLine();
int Age = (int)Convert.ToInt32(AgeAsAString);
List<String> ilist = new List<String>();
ilist.Add("Made in Daghenham");
ilist.Add("Buried");
ilist.Add("Despicable Me");
ilist.Add("The Other Guys");
ilist.Add("Takers");
string combindedString = string.Join(",", ilist);

{ if (Age >= 18)
        Console.Write(combindedString);
    else
        if (Age < 18)
        Console.Write()


        Console.ReadKey();
  

Кажется, я не могу найти простой ответ на этот вопрос, и я только начинаю со всего этого мира кодирования. Спасибо за помощь!

Комментарии:

1. Похоже, вы не сохраняете возрастные ограничения для каждого фильма. Это было бы хорошим началом. Вы должны посмотреть, как создавать классы для хранения таких вещей, как название фильма и ограничение по возрасту.

2. Есть ли причина для этой плавающей фигурной скобки перед вашей if ?

3. В дальнейшем, пожалуйста, рассмотрите подводные камни этой строки кода: , а также спросите себя, почему вы преобразуете int в int. 🙂 int Age = (int)Convert.ToInt32(AgeAsAString);

4. Когда у вас будет немного времени… прочитайте о соглашениях об именовании в C # , которые помогут сделать ваш код более читаемым для вас и других в будущем.

Ответ №1:

 public class Movie
{
   public int MinAge {get;set;}
   public string Name{get;set;}
}
var Movies = new List<Movie>{new Movie{Name = "blahblah", MinAge = 18}};
//create the list of movies with the age information
var filtered = (from m in Movies where m.MinAge >= 18 select m).ToList();
  

Ответ №2:

Может быть, вы ищете класс, который содержит нужную вам информацию о фильме

 class Movie
{
    public string Name { get; set; }
    public int AgeRestriction { get; set; }
}
  

А затем вы заполняете список на основе этого класса и возвращаете результаты так, как хотите

         Console.Write("Hi, if you wish to see a movie please enter your age: ");

        string AgeAsAString = Console.ReadLine();
        int Age = (int) Convert.ToInt32(AgeAsAString);

        List<Movie> ilist = new List<Movie>();

        ilist.Add(new Movie()
        {
            Name = "Buried",
            AgeRestriction = 18
        });

        ilist.Add(new Movie()
        {
            Name = "Despicable Me",
            AgeRestriction = 10
        });

        if (Age >= 18)
            return string.Join(",", ilist.Select(x => x.Name));
        else
            return string.Join(",", ilist.Where(x => x.AgeRestriction <= Age));

        Console.ReadKey();
  

Я предположил, что вам нужен результат в виде объединенной строки, а не списка. Чтобы отфильтровать список на основе возраста, просто используйте.

 ilist.Where(x => x.AgeRestriction <= Age).ToList()