c# - C#- 给定一个枚举名称作为字符串返回枚举的所有值
问题描述
我有一个枚举名称列表。如果有帮助,此列表可能更具有描述性,以具有诸如 Library.Base.Enums.{EnumName} 之类的枚举路径。枚举可以位于不同的文件夹中,例如 MyEnumCategories 可以存储在文件夹 Library/Base/Enums/Category/ MyEnumCities 可能位于 Library/Base/Enums/Locations/ 中。我有一个不断增长的枚举名称列表,我需要能够从列表中获取存储在枚举中的所有值。我需要返回枚举的所有值,如下所示:
List<string> enumNames=["MyEnumCategories","MyEnumCities"]
List<string> values = new List<strings>
public enum MyEnumCategories
{
Service = 0,
Corporate = 1,
Enterprise = 2,
AllSites = 3,
IndividualSites = 4,
Site = 5,
Notification = 6
}
public enum MyEnumCities
{
Chicago= 0,
Boston= 1,
NewYork= 2,
Denvor= 3,
Austin= 4,
Seattle= 5,
SanFrancisco= 6
}
输出:值 =[“服务”,“公司”,“企业”,....“西雅图”,“旧金山”,]
解决方案
使用 linq 快速简便。如果您想跨越多个程序集或添加不区分大小写或部分匹配等,您将需要添加一些额外的位。
var enumNames = new[] { "MyEnumCategories", "MyEnumCities" };
var enumTypes = Assembly.GetExecutingAssembly().GetTypes().Where(x => x.IsEnum && enumNames.Contains(x.Name));
var values = enumTypes.SelectMany(Enum.GetNames).ToArray();
推荐阅读
- tensorflow - 如果我想保留句子的顺序,在 NLTK 中矢量化文本数据的最佳方法是什么?
- r - 如何在 if 语句 r 中使用 str_detect 为 FALSE 来附加一个值
- python - 字符串替换为单词匹配
- string - 具有相同内容但比较总是返回 false 的字符串
- laravel - 如何在 eloquent 中对 OrderBy 值进行语法分析
- node.js - nodemon 在 Docker 上停留在“[nodemon] 由于更改而重新启动...”
- python - 强制pyplot直方图的x轴(python,pandas)
- javascript - 为什么此代码仅在变量位于函数内部时才有效?
- sql - sql合并两个选择查询结果,如果一列的值发生冲突,则保留查询A的结果
- python - 将来自另一个 df 的列作为列插入到另一个 df 中。卡了几个小时!与不同的列合并(加入)