C#-在结构内部对列表进行排序

C#-在结构内部对列表进行排序,c#,list,sorting,struct,C#,List,Sorting,Struct,我有一个学校作业,我遇到了麻烦。任务是创建一个控制台应用程序,允许用户添加、修改和查看电影列表。每部电影都包含标题、年份、导演等属性。我必须使用以下结构: struct Movie{ public string title; public string year; public string director; public float quality; public string mpaaRating; public string genre;

我有一个学校作业,我遇到了麻烦。任务是创建一个控制台应用程序,允许用户添加、修改和查看电影列表。每部电影都包含标题、年份、导演等属性。我必须使用以下结构:

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()
struct电影{
公共字符串标题;
公共字符串年;
公共字符串控制器;
公共交通质量;
公共广播;
公共弦乐体裁;
公开名单;
公开上市报价;
公共列表关键词;
}
结构电影制作人{
公共整数长度;
公共电影[]电影;
}
...
电影列表=新电影列表()

这是我遇到麻烦的部分。我需要按电影标题对列表进行排序。我很难弄清楚正确的方法是什么。有人有什么建议吗?

首先,这些不应该是结构,而应该是类。结构用于表示单个值的类型,并且正确实现比类复杂得多

您可以按如下方式对电影进行排序:

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

您需要对数组
电影
进行排序。因此,只需使用任何排序方法,例如
合并排序
。 如果一部电影比另一部电影大/小,则通过比较片名来决定

movie[a].title.CompareTo(movie[b].title)
由于它是一个数组(单独寻址):


首先,这两种类型都不应该是结构。第二既然你知道T列表,为什么要在MovieList中使用数组呢?事实上,为什么要有MovieList呢?@FearofahackPlanet C没有泛型或访问级别,所以它可能不是C。而且C确实有structs.comment fail:)奇怪,我已经编写了两年的C,从来没有见过使用struct。我想我需要多读一些:)@fearof-好消息是:这可能意味着你正确地使用了它们!用C语言编写
struct
是很少见的,这个问题被否决似乎有点苛刻。如果他的导师给他糟糕的赋值,这不是OPs的错误。通常使用
字符串更安全。比较(x,y)
,如果第一个操作数是
null
,应该注意,这会创建第二个数组,即有序项(保留旧数组不变),然后交换数组。
Array.Sort(List.movie,
   (a,b)=>string.Compare(a.title,b.title));