Enum 枚举转 Dictionary字典
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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字典的主要内容,如果未能解决你的问题,请参考以下文章
你能熟练使用Dictionary字典和List列表吗?(转)