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;
}

  

时间: 2024-07-31 00:32:58

Enum 枚举转 Dictionary字典的相关文章

c#将枚举转换成字典集合

枚举在软件开发中的用途 1. 枚举类型(enum type)是具有一组命名常量的独特的值类型. 2. 枚举的定义: public enum Sex { 男 = 0, 女 = 1 } 或者:如果只给男赋值,那么女=1 public enum Sex { 男 = 0, 女 } 3. 我们在实际开发中,对于数据库的设计会经常需要很多状态字段(比如性别.审核状态.分类状态等等等等),而这些状态字段的值又只有固定的几个,这个时候我们一般会需要数据字典来维护这些数据.而数据字典该以什么形式存在呢? 以我自己

C#中的Dictionary字典类介绍

关键字:C# Dictionary 字典 作者:txw1958原文:http://www.cnblogs.com/txw1958/archive/2012/11/07/csharp-dictionary.html 说明    必须包含名空间System.Collection.Generic     Dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值)     键必须是唯一的,而值不需要唯一的     键和值都可以是任何类型(比如:string, int, 自定义类型,等等

获取Enum枚举值描述的几法方法

原文:获取Enum枚举值描述的几法方法 1.定义枚举时直接用中文 由于VS对中文支持的很不错,所以很多程序员都采用了此方案. 缺点:1.不适合多语言 2.感觉不太完美,毕竟大部分程序员大部分代码都使用英文 2.利用自定义属性定义枚举值的描述(博客园-大尾巴狼) 缺点:不适合多语言 原文:http://www.cnblogs.com/hilite/archive/2006/03/28/360793.html 枚举定义: [EnumDescription("订单.订单中的产品.产品项的状态.&quo

C# Dictionary 字典

C#中的Dictionary字典类介绍 关键字:C# Dictionary 字典 作者:txw1958原文:http://www.cnblogs.com/txw1958/archive/2012/11/07/csharp-dictionary.html 说明    必须包含名空间System.Collection.Generic     Dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值)     键必须是唯一的,而值不需要唯一的     键和值都可以是任何类型(比如:s

dictionary(字典)

dictionary(字典):   字典对象   字典是一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划.字母来查对应页的详细内容. 1.      dic={"name":"sang","age":22,"hobby":"game"}             $字典有2大特点:*(1)无序,(2)key键唯一 print(dic) 2.       dictionary的创建  

java之enum枚举(2015年05月28日)

背景: 今天启动了一个新的项目,由于要从之前的旧项目中拿过来一些代码,所以就看了下公司之前项目代码,发现有定义的常量类,也有枚举类,然后就在想着两者的功能差不多,那他们之间到底有什么区别呢,所以就决定了解下enum枚举   一.简介 Java 中的枚举类型采用关键字enum 来定义,从jdk1.5才有的新类型,所有的枚举类型都是继承自Enum 类型. 二.基本用法 1.作为常量使用 一个完整的枚举类型示例 /** * 枚举 * @author Dreyer * @since 1.0 * @dat

C#的Dictionary字典

Dictionary Dictionary可以取代Hashtable了; 有一种新的遍历方式 foreach(KeyValuePair <int,string> kv in dic){} dictionary练习 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Dictionary字典 { c

enum枚举类型的定义

enum枚举类型的定义方式与某种用法 #include <iostream> using namespace std; int main() { enum TOT{ zero, one, two, three, four, five };//0,1,2,3,4,5 TOT to1; to1 = five; switch (to1) { case 0:cout << "zero\n"; break; case 1:cout << "one\n

中秋佳节--理解Enum枚举

一.Enum枚举的作用 1.使用枚举可以限定取值范围,枚举中定义的每个常量都可以理解为对象: Eg: Public enum Color{ RED, GREEN,BULE; } 说明:RED实际上就表示的是枚举的名称,默认的编号是0,可以使用ordinal()方法获得. 2.使用enum关键字定义枚举类,其中包含的对象可以初始化定义(初始化构造函数) Eg: package cn.test.java.enums; enum ColorDemo{ RED("红色"),GREEN(&quo