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

.NET 4.7中如何实现枚举与字符串/整数列表互转?

.NET 4.7 中枚举与字符串/整数列表的互转实现

首先你的枚举定义如下:

public enum MyEnum
{
    A = 0,
    B = 1,
    C = 2,
    D = 3,
    E = 4
}

1. 字符串列表转对应整数列表

直接利用Enum.Parse将字符串解析为枚举实例,再强制转换为整数即可:

var inputStrings = new List<string> { "A", "C", "E" };
var resultInts = inputStrings
    .Select(s => (int)Enum.Parse(typeof(MyEnum), s))
    .ToList();
// 输出结果:[0, 2, 4]

如果需要处理无效输入(比如列表中存在非枚举成员的字符串),可以用Enum.TryParse做安全解析:

var safeResultInts = inputStrings
    .Select(s => 
    {
        if (Enum.TryParse(typeof(MyEnum), s, out object enumVal))
        {
            return (int)enumVal;
        }
        // 这里可以根据业务需求返回默认值、抛出异常或过滤掉无效项
        throw new ArgumentException($"无法解析枚举字符串: {s}");
    })
    .ToList();

2. 整数列表转对应字符串列表

有两种常用方式:

方式一:通过Enum.GetName直接获取枚举名称

var inputInts = new List<int> { 0, 2, 4 };
var resultStrings = inputInts
    .Select(i => Enum.GetName(typeof(MyEnum), i))
    .ToList();
// 输出结果:["A", "C", "E"]

方式二:将整数转换为枚举实例后调用ToString

var resultStrings = inputInts
    .Select(i => ((MyEnum)i).ToString())
    .ToList();

同样可以加入无效输入校验:

var safeResultStrings = inputInts
    .Select(i => 
    {
        if (Enum.IsDefined(typeof(MyEnum), i))
        {
            return ((MyEnum)i).ToString();
        }
        // 处理无效整数的逻辑
        throw new ArgumentException($"无法解析枚举整数: {i}");
    })
    .ToList();

内容的提问来源于stack exchange,提问作者TheBoubou

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:50:32