You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中按名称对Enum枚举的Linq查询结果排序?

按枚举名称排序的实现方法

你可以直接在Linq查询链中添加OrderBy方法,基于枚举名称完成排序,具体分几种场景处理:


1. 对筛选后的名称字符串直接排序

如果你的Select最终返回的还是枚举名称字符串,只需在查询末尾追加排序逻辑即可:

Enum.GetNames(x.options)
    .Where(...) // 你的筛选条件
    .Select(...) // 若返回结果为名称字符串
    .OrderBy(name => name); // 按名称升序排序

如果需要倒序排列,换成OrderByDescending(name => name)即可。


2. 转换为枚举值后按名称排序

如果你的Select是将名称转换为枚举值,建议先保留名称字段用于排序,最后再提取目标枚举值:

Enum.GetNames(x.options)
    .Where(...) // 你的筛选条件
    .Select(name => new { Name = name, EnumValue = Enum.Parse(x.options, name) })
    .OrderBy(item => item.Name) // 按名称排序
    .Select(item => item.EnumValue); // 最终返回枚举值

3. 先排序再筛选(简洁写法)

如果业务逻辑允许,也可以先对所有枚举名称排序,再执行筛选和转换操作:

Enum.GetNames(x.options)
    .OrderBy(name => name) // 先按名称排序
    .Where(...) // 再执行筛选
    .Select(...); // 最后完成转换

补充说明

Enum.GetNames返回的是枚举成员的名称数组,OrderBy(name => name)会按照默认的字符串字典序完成排序,能满足绝大多数场景的需求。

内容的提问来源于stack exchange,提问作者Federico De Armas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 10:10:25