Ответ 1
return final.OrderBy(s => s.PlayOrder).ThenBy(s => s.Name);
Скажем, у меня есть список песен.
Song {
public string Name = "";
public int PlayOrder = 0;
}
Теперь я хочу сначала отсортировать их с помощью PlayOrder, начиная с нуля и второго по имени в алфавитном порядке.
Таким образом, примерный набор отсортированных результатов будет (Name, PlayOrder):
/*
Pachelbel Canon, 0
A Happy Song, 4
Beethoven 5th, 4
Some Other Song, 7
*/
Посмотрите, как PlayOrder = 4 в алфавитном порядке? Это то, что я собираюсь.
Сейчас у меня есть только сортировка по одному полю:
List<Song> final = new List<Song>();
...
final.Sort((x, y) => x.PlayOrder.CompareTo(y.PlayOrder));
return final;
Как я могу сортировать по имени, как показано выше?
return final.OrderBy(s => s.PlayOrder).ThenBy(s => s.Name);
Если вы хотите продолжить использование метода сортировки, вам нужно будет сделать вашу функцию сравнения умнее:
final.Sort((x, y) => {
var ret = x.PlayOrder.CompareTo(y.PlayOrder);
if (ret == 0) ret = x.Name.CompareTo(y.Name);
return ret;
});
Если вы хотите использовать LINQ, вы можете пойти с тем, что опубликовал K Ivanov.