2010-12-04 53 views
3

嘿傢伙。我有一份我遇到麻煩的學校作業。該任務是創建一個控制檯應用程序,允許用戶添加,修改和查看電影列表。每個影片包含像標題,一年,導演等,我不得不使用下面的結構屬性:C# - 排序結構中的列表

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

這裏是我遇到的麻煩的部分。我需要按電影標題對列表進行排序。我很難弄清楚這是什麼正確的方法。任何人有任何建議?

+0

電影不應該是一個結構(但一個類)。 – 2010-12-04 23:06:30

+1

首先,這些類型都不應該是結構。第二;既然你知道List-of-T,爲什麼在MovieList中使用一個數組 - 爲什麼要使用MovieList呢? – 2010-12-04 23:07:36

+0

我無法更改任何這些。這些是分配的要求。 – Tyler 2010-12-04 23:08:15

回答

2

首先,那些不應該是結構,他們應該是類。一個結構用於表示單個值的類型,並且比類更適合實現。

你可以像這樣的電影進行排序:

List.movie = List.movie.OrderBy(m => m.title).ToArray(); 
0

您需要的陣列movie排序。所以只需使用任何排序方法,如Merge Sort。 如果電影比另一個更大/更小,則通過比較標題來決定。

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

由於它是一個數組(單獨尋址):

Array.Sort(List.movie, 
    (a,b)=>string.Compare(a.title,b.title));