C#:如何将枚举值列表转换为字符串列表?
把List转换为List的最简方式
嘿,完全不用手动创建新列表再逐个遍历添加!C#的LINQ提供了非常简洁的写法,一行代码就能搞定:
List<string> stringList = myList.Select(e => e.ToString()).ToList();
简单解释下这个写法:
Select(e => e.ToString()):通过LINQ的Select方法,遍历原列表里的每一个MyEnum元素,把每个元素调用ToString()转换成对应的字符串(也就是枚举成员的名称,比如Apple会变成"Apple")。ToList():把Select返回的IEnumerable<string>转换成List<string>类型,得到你需要的结果。
当然,如果你需要更自定义的字符串转换(比如不是用枚举的默认名称),还可以用Enum.GetName(typeof(MyEnum), e)来获取名称,效果和ToString()一致,但ToString()更简洁。
要是你好奇手动遍历的写法(其实没必要用这种),大概是这样:
List<string> stringList = new List<string>(); foreach (var item in myList) { stringList.Add(item.ToString()); }
但显然LINQ的写法更简洁优雅,代码可读性也更高,日常开发里优先用这种方式就好。
内容的提问来源于stack exchange,提问作者BlueTriangles




