Trier une liste par une propriété, puis par une autre

J'ai un exemple de classe contenant des données de deux points:

public enum Sort { First, Second, Third, Fourth }
public class MyClass
{
    public MyClass(Sort sort, string name) { 
        this.Sort = sort; 
        this.Name = name; 
    }

    public Sort Sort { get; set; }
    public string Name { get; set; }
}

Je suis à la recherche pour les classer en groupes en fonction de leur Sort biens, puis de les classer par ordre alphabétique de ces groupes.

List<MyClass> list = new List<MyClass>() { 
    new MyClass(MyClass.Sort.Third, "B"), 
    new MyClass(MyClass.Sort.First, "D"),
    new MyClass(MyClass.Sort.First, "A"),
    new MyClass(MyClass.Sort.Fourth, "C"),
    new MyClass(MyClass.Sort.First, "AB"),
    new MyClass(MyClass.Sort.Second, "Z"),
};

La sortie serait alors:
(montrant Name)

A
AB
D
Z
B
C

J'ai été capable de le faire à l'aide d'un foreach pour séparer les éléments dans de nombreux petits tableaux (regroupés par la valeur d'enum) mais cela semble très fastidieux - et je pense qu'il doit y avoir quelques LINQ solution que je ne connais pas.

source d'informationauteur caesay