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

枚举在软件开发中的用途

1. 枚举类型(enum type)是具有一组命名常量的独特的值类型。

2. 枚举的定义:

 public enum Sex
        {
            男 = 0,
            女 = 1
        }

或者:如果只给男赋值,那么女=1

 public enum Sex
        {
            男 = 0,
            女
        }

3. 我们在实际开发中,对于数据库的设计会经常需要很多状态字段(比如性别、审核状态、分类状态等等等等),而这些状态字段的值又只有固定的几个,这个时候我们一般会需要数据字典来维护这些数据。而数据字典该以什么形式存在呢?

以我自己的经验,我一般以两种方式来保存这些状态数据:

3.1.建一个数据库数据字典表(key,value,parentKey)来保存这些数据

优点:可以表示具有上下级关系的数据字典、在生产阶段可以随意修改数据的名称

缺点:需要从数据库获取,性能稍差

3.2.将这些数据以枚举的形式保存(我们可以使用枚举表示数据库表中的状态为字段对应的一组状态,比如对于person表中的sex字段的值我们就可以用枚举表示)

优点:赋值的时候可以以强类型的方式赋值而不是数字,比如:

int a = (int)EnumHelper.Sex.女;

缺点:生产阶段不能修改名称

enum、int、string三种类型之间的互转

int a = (int)Sex.女;
            string b = Sex.女.ToString();
            Sex s= (Sex)Enum.Parse(typeof(Sex), "女");
            Sex t= (Sex)1;

枚举转换成字典集合的方法

1.这里我就直接列举代码如下:

 public static class EnumHelper
    {
        /// <summary>
        /// 根据枚举的值获取枚举名称
        /// </summary>
        /// <typeparam name="T">枚举类型</typeparam>
        /// <param name="status">枚举的值</param>
        /// <returns></returns>
        public static string GetEnumName<T>(this int status)
        {
            return Enum.GetName(typeof(T), status);
        }
        /// <summary>
        /// 获取枚举名称集合
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static string[] GetNamesArr<T>()
        {
            return Enum.GetNames(typeof(T));
        }
        /// <summary>
        /// 将枚举转换成字典集合
        /// </summary>
        /// <typeparam name="T">枚举类型</typeparam>
        /// <returns></returns>
        public static Dictionary<string, int> getEnumDic<T>()
        {

            Dictionary<string, int> resultList = new Dictionary<string, int>();
            Type type = typeof(T);
            var strList = GetNamesArr<T>().ToList();
            foreach (string key in strList)
            {
                string val = Enum.Format(type, Enum.Parse(type, key), "d");
                resultList.Add(key, int.Parse(val));
            }
            return resultList;
        }

    }
 public enum Sex
    {
        男 = 0,
        女
    }

使用方法如下:

static void Main(string[] args)
        {
            var name = EnumHelper.GetEnumName<Sex>(1);
            Console.WriteLine(name);
            var dic = EnumHelper.getEnumDic<Sex>();
            int a = (int)Sex.女;
        }
时间: 2024-09-28 21:04:19

c#将枚举转换成字典集合的相关文章

单表查询结果转换成泛型集合

/// <summary> /// 单表查询结果转换成泛型集合 /// </summary> /// <typeparam name="T">泛型集合类型</typeparam> /// <param name="dt">查询结果DataTable</param> /// <returns>以实体类为元素的泛型集合</returns> public static ILis

How to cast List&lt;Object&gt; to List&lt;MyClass&gt; Object集合转换成实体集合

List<Object> list = getList(); return (List<Customer>) list; Compiler says: cannot cast List<Object> to List<Customer> 不能将Object集合强制转换成实体集合! you can always cast any object to any type by up-casting it to Object first. in your case:

IOS 把格式化的JSON字符串转换成字典

[html] view plaincopyprint? /*! * @brief 把格式化的JSON格式的字符串转换成字典 * @param jsonString JSON格式的字符串 * @return 返回字典 */ + (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString { if (jsonString == nil) { return nil; } NSData *jsonData = [jsonString d

把一个类(或者Object)转换成字典

直接上代码:把一个类转换成object,然后在转换成字典 1 internal static IDictionary<string, string> GetDictionary(this object source) 2 { 3 if (source == null) 4 { 5 return new Dictionary<string, string>(); 6 } 7 PropertyDescriptorCollection properties = TypeDescripto

python将字符串转换成字典的几种方法

当我们遇到类似于{'a':1, 'b':2, 'c':3}这种字符串时,想要把它转换成字典进行处理,可以使用以下几种方法: 1. Python自带的eval函数(不安全) dictstr = '{"a":1, "b":2, "c":{"d":1}}' mydict = eval(dictstr) 2.使用 ast 模块的 literal_eval 函数(安全) dictstr = '{"a":1, &quo

python 将txt文件转换成字典

txt 文件内容如下 liu 123shao 456hui 789 将上述txt文件转换成字典格式实现思路:定义一个空列表,按行读取txt文件,然后转换成嵌套列表,进而通过dict方法将嵌套列表转换成字典(左边为key,右边为value) 1 with open('user_list','r',encoding='utf-8') as f: 2 dic=[] 3 for line in f.readlines(): 4 line=line.strip('\n') #去掉换行符\n 5 b=lin

把SQLAlchemy查询对象转换成字典使用

注:针对的是查询出来的是单条对象 1.config.py文件 #!/usr/bin/env python #-*- coding: utf-8 -*- from sqlalchemy import create_engine,Column,String,Integer from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker HOSTNAME = '127.0.0

原创:关于使用Mybatis插件自动生成造成批量插入转换成list集合的问题以及解决方案(转载请注明出处,谢谢!)

问题: 由于项目中需要批量插入的功能,然后我就用到了阿里的json包,将json数据转换成list集合在批量添加到数据库,但是这个过程中,我突然发现一个问题,之前接收前台传来的值是有的,但转换之后某些字段的值没有了,后面发现,原来是Mybatis自动生成插件做的怪,将实体类赋setter和getter方法时,并没有将属性大写,也就是说原本我的实体字段为gName;setter方法之后为setgName,这就违反了命名规则,但是阿里json包就出现了不能转换报Null的问题,经过试验,终于找到了解

将xml字符串的所有叶标签转换成Map集合

实际问题:对方服务器接口采用webservice方式返回xml报文,现需解析xml获取所有叶节点的标签名及携带的值 解决方案:利用dom4j解析xml并利用递归获取叶节点,将标签名及标签值封装到Map集合供业务调用 import java.util.HashMap; import java.util.List; import java.util.Map; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.