gpt4 book ai didi

c# - Enum.GetValues() 上的 OrderBy

转载 作者:可可西里 更新时间:2023-11-01 07:49:54 27 4
gpt4 key购买 nike

我正在从 enum 中填充 MVC 4 中的 DropDownList,我想对枚举值从大到小进行排序。但是,似乎没有直接的方法来解决这个问题。目前,我正在使用此代码添加到字典中,键是 ID,值是显示文本:

var priorities = Enum.GetValues(typeof(Models.Priority)).OfType<Models.Priority>().ToList();

for (int i = priorities.Count - 1; i >= 0; i--)
{
Models.Priority priority = priorities[i];
prioritiesDictionary.Add((int)priority, "Priority " + ((int)priority).ToString());
}

我不认为将枚举值放入列表并向后循环是最有效的方法。枚举中只有四个值,但是是否有更好的方法对从 Enum.GetValues 返回的内容执行 OrderBy 操作?我知道按照我的方式这样做可能对性能影响很小,但我想知道更大的枚举。

最佳答案

听起来你只是想要:

var priorities = ((Models.Priority[]) Enum.GetValues(typeof(Models.Priority)))
.OrderByDescending(x => x);

或者为了避免尽可能多的括号:

var priorities = (Models.Priority[]) Enum.GetValues(typeof(Models.Priority));
var ordered = priorities.OrderByDescending(x => x);

目前尚不清楚您当前的代码如何为您提供字典 - 但上面肯定会为您提供一系列枚举值,从最高到最低排序。您不需要转换为 int,因为相同类型的枚举值已经可以相互比较。

如果您需要一个列表,只需在 OrderByDescending 调用之后调用 ToList()

关于c# - Enum.GetValues() 上的 OrderBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19599252/

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