首页 > 代码库 > Enum 枚举转 Dictionary字典
Enum 枚举转 Dictionary字典
方法一:
Dictionary<int, string> mydic = new Dictionary<int, string>(); foreach (EnumName foo in Enum.GetValues(typeof(EnumName))) { mydic.Add((int)foo, foo.ToString()); }
方法二:
var dict = Enum.GetValues(typeof(EnumName)) .Cast<EnumName>() .ToDictionary(t => (int)t, t => t.ToString());
方法三【Key是value,Value是description(如果不存在description 则是name)】:
/// <summary> /// 枚举转字典集合 /// </summary> /// <typeparam name="T">枚举类名称</typeparam> /// <param name="keyDefault">默认key值</param> /// <param name="valueDefault">默认value值</param> /// <returns>返回生成的字典集合</returns> public static Dictionary<string, object> EnumListDic<T>(string keyDefault, string valueDefault = "") { Dictionary<string, object> dicEnum = new Dictionary<string, object>(); Type enumType = typeof(T); if (!enumType.IsEnum) { return dicEnum; } if (!string.IsNullOrEmpty(keyDefault)) //判断是否添加默认选项 { dicEnum.Add(keyDefault, valueDefault); } string[] fieldstrs = Enum.GetNames(enumType); //获取枚举字段数组 foreach (var item in fieldstrs) { string description = string.Empty; var field = enumType.GetField(item); object[] arr = field.GetCustomAttributes(typeof(DescriptionAttribute), true); //获取属性字段数组 if (arr != null && arr.Length > 0) { description = ((DescriptionAttribute)arr[0]).Description; //属性描述 } else { description = item; //描述不存在取字段名称 } dicEnum.Add(description, (int)Enum.Parse(enumType, item)); //不用枚举的value值作为字典key值的原因从枚举例子能看出来,其实这边应该判断他的值不存在,默认取字段名称 } return dicEnum; }
Enum 枚举转 Dictionary字典
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。