C# Trier la Liste par Enum

J'ai obtenu une liste d'Entité, qui a obtenu un enum.

public class Car
{
    public int CarId { get; set; }

    public string CarName { get; set; }

    public CarCategory CarCategory { get; set; }
}

public enum CarCategory
{
    None = 0,
    kLowRange = 1,
    kMidRange = 2,
    kHighRange = 3
}

Maintenant, j'ai une liste de Voitures, j'aimerais utiliser les Comparer et de les exécuter sur l'enum tels que toutes les entités ayant CarCategory comme kMidRange et kHighRange sera classé premier de la liste.

J'ai essayé avec la réponse mais n'a trouvé aucune chance.

Grâce.

Mise à JOUR:
J'ai un peu ont eu l'erreur que j'ai fais. Je regardais

var sortedList = carList
  .OrderBy(x => x.CarCategory, 
                new EnumComparer<CarCategory> {
                  CarCategory.kMidRange, 
                  CarCategory.kHighRange});

Mais a été que de mêmes valeurs. J'ai du ajouter .ToList() pour obtenir le résultat.

var sortedList = carList
  .OrderBy(x => x.CarCategory, 
                new EnumComparer<CarCategory> { 
                  CarCategory.kMidRange, 
                  CarCategory.kHighRange})
  .ToList();

Me donnera les résultats escomptés. Mon erreur!

Voulez-vous trier l'original List<Car> ou voulez-vous une séquence ordonnée comme cars.OrderByDescending(car => (int)car.CarCategory)?
Il semble que var sorted = cars.OrderBy(c => c.CarCategory).ToList(); devrait être suffisant.
S'il vous plaît partager le utilisation & Mise de votre Comparer, et c'est infiniment plus facile de vous aider.
var sortedCars = cars.OrderBy(c=>(int)c.Carcategory); ou vous pouvez trouver une autre réponse de here
OrderByDescending, ou peut-être avec un peu plus de complexité si il veut vraiment la mi à venir avant haute, comme sa question, et ce genre de implique.

OriginalL'auteur Xander | 2017-03-02