gpt4 book ai didi

c# - 按枚举排序 List,其中枚举乱序

转载 作者:IT王子 更新时间:2023-10-29 04:20:24 26 4
gpt4 key购买 nike

我有一个消息列表。每条消息都有一个类型。

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

枚举名称是任意的,不能更改。

我需要返回排序为:Boo、Bar、Foo、Doo 的列表

我目前的解决方案是创建一个 tempList,按我想要的顺序添加值,返回新列表。

List<Message> tempList = new List<Message>();
tempList.AddRange(messageList.Where(m => m.MessageType == MessageType.Boo));
tempList.AddRange(messageList.Where(m => m.MessageType == MessageType.Bar));
tempList.AddRange(messageList.Where(m => m.MessageType == MessageType.Foo));
tempList.AddRange(messageList.Where(m => m.MessageType == MessageType.Doo));
messageList = tempList;

我如何使用 IComparer 执行此操作? ?

最佳答案

使用 IComparer 的替代方法是构建一个排序字典。

var orderMap = new Dictionary<MessageType, int>() {
{ MessageType.Boo, 0 },
{ MessageType.Bar, 1 },
{ MessageType.Foo, 2 },
{ MessageType.Doo, 3 }
};

var orderedList = messageList.OrderBy(m => orderMap[m.MessageType]);

关于c# - 按枚举排序 List<T>,其中枚举乱序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17308818/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com