数据库中存放的为枚举数组,例"1,2,3,4",对应的字符串为"内部员工,内部司机,租赁司机,临时代驾"
1 public class EnumToString 2 { 3 /// <summary> 4 /// 枚举转换字符串 5 /// </summary> 6 /// <typeparam name="T">泛型</typeparam> 7 /// <param name="obj">集合对象</param> 8 /// <param name="t">对象类型</param> 9 /// <param name="dic">数组字典</param> 10 /// <param name="st">数组字典名称</param> 11 /// <returns></returns> 12 public static IList<T> Temp<T>(IList<T> obj, Type t, EnumDicHelper dic, string[] st) 13 { 14 //获取筛选后的成员,NonPublic:非公共成员加入搜索中,Public:公共成员加入搜索中,Instance:指定实例加入搜索中,DeclaredOnly:继承成员不加入搜索中 15 PropertyInfo[] finfos = t.GetProperties(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly); 16 //循环传入的数组长度 17 for (int i = 0; i < obj.Count; i++) 18 { 19 //循环传入的字典长度 20 for (int j = 0; j < st.Length; j++) 21 { 22 //循环遍历成员对象 23 foreach (PropertyInfo finfo in finfos) 24 { 25 //成员对象 等于 数组字典名称 26 if (finfo.Name == st[j]) 27 { 28 string[] temp = { }; 29 //为该名称的对象成员值不为null 30 if (finfo.GetValue(obj[i]) != null) 31 { 32 //将该对象成员的值用以','分割 存入数组 33 temp = finfo.GetValue(obj[i]).ToString().Split(','); 34 } 35 string b = ""; 36 //循环 分割后的对象成员数组长度 37 for (int k = 0; k < temp.Length; k++) 38 { 39 //如果字典对象包括该枚举值 40 if (dic.Dic[st[j]].ContainsKey(temp[k])) 41 { 42 //将枚举值对应的字典值读取并用','分割 加入 字符串中 43 b += dic.Dic[st[j]][temp[k]] + ','; 44 } 45 } 46 //去除第一个字节为','的字符串 47 if (b.IndexOf(',') > -1) 48 { 49 b = b.Remove(b.LastIndexOf(','), 1); 50 } 51 finfo.SetValue(obj[i], b); 52 } 53 } 54 } 55 } 56 return obj; 57 } 58 } 59 60 public class EnumDicHelper 61 { 62 public IDictionary<string, Dictionary<string, string>> Dic { get; set; } = new Dictionary<string, Dictionary<string, string>>() 63 { 64 { "RentObject",new Dictionary<string, string>//适用对象 65 { 66 { "1","内部使用"},{ "2","员工自用"},{ "3","客户职员"},{ "4","网约车登记"},{ "5","平台用户"} 67 } 68 }, 69 { "AllowDrive",new Dictionary<string, string>//允许驾驶 70 { 71 { "1","内部员工"}, { "2","内部司机"}, { "3","租赁司机"}, { "4","临时代驾"} 72 } 73 }, 74 { "DrivingWays",new Dictionary<string, string>//准驾方式 75 { 76 { "1","自驾"}, { "2","陪驾"}, { "3","代驾"} 77 } 78 }, 79 {"DrivingVehicle",new Dictionary<string, string>//准驾车辆 80 { 81 { "1","公司车辆"}, { "2","长租车辆"}, { "3","短租车辆"},{ "4","班车车辆"},{ "5","其他车辆"} 82 } 83 }, 84 }; 85 86 public EnumDicHelper() 87 { 88 89 } 90 91 public EnumDicHelper(IDictionary<string, Dictionary<string, string>> dic) 92 { 93 Dic = dic; 94 } 95 }
调用例子:
var items = EnumToString.Temp(对象数组, typeof(Modal), new EnumDicHelper(), new string[] { "枚举对象", "AllowDrive", "DrivingWays", "DrivingVehicle" });