.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
相关产品推荐
相关产品推荐

