Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
265 views
in Technique[技术] by (71.8m points)

c# - How can I sort a List<T> by multiple T.attributes?

Let's say I have a List of Songs.

Song {
    public string Name = "";
    public int PlayOrder = 0;
    }

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
*/

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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
return final.OrderBy(s => s.PlayOrder).ThenBy(s => s.Name);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...