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