如何对List< T>进行排序通过多个T.attributes?
问题描述:
假设我有一个歌曲清单.
Let's say I have a List of Songs.
Song {
public string Name = "";
public int PlayOrder = 0;
}
现在,我想按PlayOrder对其进行排序(从零开始,然后按Name按字母顺序进行排序).
Now I want to sort them first by PlayOrder starting at zero and second by Name alphabetically.
因此,一组排序结果的示例将是(名称,播放顺序):
So an example set of sorted results would be (Name, PlayOrder):
/*
Pachelbel's Canon, 0
A Happy Song, 4
Beethoven's 5th, 4
Some Other Song, 7
*/
看看PlayOrder = 4的顺序是按字母顺序排列的吗?那就是我要的.
See how the PlayOrder = 4 ones are in order alphabetically? That's what I'm going for.
现在我只能按一个字段进行排序:
Right now I have it only sorting by one field:
List<Song> final = new List<Song>();
...
final.Sort((x, y) => x.PlayOrder.CompareTo(y.PlayOrder));
return final;
我如何如上所述按名称进行排序?
How can I also sort by Name as demonstrated above?
答
return final.OrderBy(s => s.PlayOrder).ThenBy(s => s.Name);