C # - сортировка списка внутри структуры - PullRequest
3 голосов
/ 05 декабря 2010

Привет, ребята. У меня есть задание для школы, с которым у меня проблемы. Назначение - создать консольное приложение, которое позволит пользователям добавлять, изменять и просматривать список фильмов. Каждый фильм содержит такие атрибуты, как заголовок, год, режиссер и т. Д. Я должен использовать следующие структуры:

struct Movie{
    public string title;
    public string year;
    public string director;
    public float quality;
    public string mpaaRating;
    public string genre;
    public List<string> cast;
    public List<string> quotes;
    public List<string> keywords;
}
struct MovieList{
    public int length;
    public Movie[] movie;
}
...
MovieList List = new MovieList()

Вот часть, с которой у меня проблемы. Мне нужно отсортировать список по названию фильма. У меня проблемы с выяснением, как правильно это сделать. У кого-нибудь есть совет?

Ответы [ 3 ]

2 голосов
/ 05 декабря 2010

Поскольку это массив (адресуемый отдельно):

Array.Sort(List.movie,
   (a,b)=>string.Compare(a.title,b.title));
2 голосов
/ 05 декабря 2010

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

Фильмы можно сортировать так:

List.movie = List.movie.OrderBy(m => m.title).ToArray();
0 голосов
/ 05 декабря 2010

Вам нужно отсортировать массив movie.Так что просто используйте любой метод сортировки, например Merge Sort.Решение о том, является ли фильм больше / меньше другого, принимается путем сравнения названий.

movie[a].title.CompareTo(movie[b].title)
...