#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()