Sort a List by enum where enum is out of order

前端 未结 7 834
轻奢々
轻奢々 2020-12-25 11:15

I have a List of messages. Each message has a type.

public enum MessageType
{
    Foo = 0,
    Bar = 1,
    Boo = 2,
    Doo = 3
}

The enum

7条回答
  •  悲哀的现实
    2020-12-25 12:13

    Instead of using an IComparer, you could also use a SelectMany approach, which should have better performance for large message lists, if you have a fixed number of message types.

    var messageTypeOrder = new [] {
        MessageType.Boo,
        MessageType.Bar,
        MessageType.Foo,
        MessageType.Doo,
    };
    
    List tempList = messageTypeOrder
        .SelectMany(type => messageList.Where(m => m.MessageType == type))
        .ToList();
    

提交回复
热议问题