假设我有一首歌曲列表.
Song {
public string Name = "";
public int PlayOrder = 0;
}
Run Code Online (Sandbox Code Playgroud)
现在我想首先按PlayOrder从零开始对它们进行排序,然后按字母顺序按名称排序.
因此,一组示例排序结果将是(Name,PlayOrder):
/*
Pachelbel's Canon, 0
A Happy Song, 4
Beethoven's 5th, 4
Some Other Song, 7
*/
Run Code Online (Sandbox Code Playgroud)
请参阅按字母顺序查看PlayOrder = 4的顺序?这就是我想要的.
现在我只有一个字段排序:
List<Song> final = new List<Song>();
...
final.Sort((x, y) => x.PlayOrder.CompareTo(y.PlayOrder));
return final;
Run Code Online (Sandbox Code Playgroud)
我如何按名称排序,如上所示?
Kri*_*nov 54
return final.OrderBy(s => s.PlayOrder).ThenBy(s => s.Name);
Run Code Online (Sandbox Code Playgroud)
tst*_*ter 30
如果要继续使用sort方法,则需要使比较功能更智能:
final.Sort((x, y) => {
var ret = x.PlayOrder.CompareTo(y.PlayOrder);
if (ret == 0) ret = x.Name.CompareTo(y.Name);
return ret;
});
Run Code Online (Sandbox Code Playgroud)
如果您想使用LINQ,那么您可以使用K Ivanov发布的内容.