.NET枚举类型转为List类型
如图所示这个竞卖状态,原先是在前端界面通过html代码写死的几个状态,现在需要改为动态加载。这个几个状态是定义的枚举类型。

1:定义一个枚举类型
/// <summary>
/// 资源状态
/// </summary>
public enum ResourceState
{
/// <summary>
/// 下架
/// </summary>
[Description("下架")]
SoldOut = 0,
/// <summary>
/// 上架
/// </summary>
[Description("上架")]
Putaway = 1,
/// <summary>
/// 交易成功
/// </summary>
[Description("交易成功")]
Success = 2,
/// <summary>
/// 废标
/// </summary>
[Description("废标")]
AbandonedTender = 6,
/// <summary>
/// 违约标
/// </summary>
[Description("违约标")]
DefaultMark = 7,
/// <summary>
/// 中标
/// </summary>
[SetClassification(Type = 5)]
[Description("中标")]
WinTheBidding = 3,
/// <summary>
/// 流标
/// </summary>
[SetClassification(Type = 6)]
[Description("流标")]
FlowStandard = 4,
/// <summary>
/// 未中标
/// </summary>
[SetClassification(Type = 4)]
[Description("未中标")]
LoseABid = 5,
/// <summary>
/// 竞价中
/// </summary>
[SetClassification(Type = 2)]
[Description("竞价中")]
Bidding = 8,
/// <summary>
/// 竞拍中
/// </summary>
[SetClassification(Type = 3)]
[Description("竞拍中")]
Auctioning = 9,
/// <summary>
/// 已处理(针对于流标资源)
/// </summary>
[Description("已处理")]
Alreadyprocessed = 10,
/// <summary>
/// 已过期
/// </summary>
[Description("已过期")]
ExpiredTime = 11,
/// <summary>
/// 所有报价
/// </summary>
[SetClassification(Type = 1)]
[Description("所有报价")]
All = 12
}
2:自定义一个标记类型继承Attribute
/// <summary>
/// 添加自定义属性
/// 作用:过滤枚举类型
/// </summary>
public class SetClassificationAttribute : Attribute
{
/// <summary>
/// 分类
/// </summary>
public int Type { get; set; }
public SetClassificationAttribute() { }
}
3:自定义返回List类型
/// <summary>
/// 自定义返回值类型
/// </summary>
public class EnumberCreditType
{
/// <summary>
/// 枚举的描述
/// </summary>
public string Desction { set; get; }
/// <summary>
/// 枚举名称
/// </summary>
public string Key { set; get; }
/// <summary>
/// 枚举对象的值
/// </summary>
public int Value { set; get; }
/// <summary>
/// 描述
/// </summary>
public string Name { get; set; }
/// <summary>
/// 分类
/// </summary>
public int Classification { set; get; }
}
4:枚举转为List<EnumberCreditType>方法
/// <summary>
/// 获取枚举列表
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static List<EnumberCreditType> EnumToList<T>()
{
List<EnumberCreditType> list = new List<EnumberCreditType>();
foreach (var e in Enum.GetValues(typeof(T)))
{
EnumberCreditType m = new EnumberCreditType();
object[] objArr = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true);
if (objArr != null && objArr.Length > 0)
{
DescriptionAttribute da = objArr[0] as DescriptionAttribute;
m.Desction = da.Description;
}
//SetClassification
object[] setClassificationArr = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(SetClassificationAttribute), true);
if (setClassificationArr != null && setClassificationArr.Length > 0)
{
SetClassificationAttribute da = setClassificationArr[0] as SetClassificationAttribute;
m.Classification = da.Type;
}
//Display
object[] disArr = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DisplayAttributes), true);
if (disArr != null && disArr.Length > 0)
{
DisplayAttribute da = disArr[0] as DisplayAttribute;
m.Name = da.Name;
}
m.Value = Convert.ToInt32(e);
m.Key = e.ToString();
list.Add(m);
}
return list;
}
5:使用
static void Main(string[] args)
{
// 获取枚举类型转为List,使用List的Where过滤条件
var query = _enumAppservice.EnumToList<ResourceState>().Where(e => e.Classification>=1&&e.Classification<=6).OrderBy(e=>e.Classification).ToList();
Console.ReadKey();
}
.NET枚举类型转为List类型的更多相关文章
- MySQL中,把varchar类型转为date类型
如下表: 先使用str_to_date函数,将其varchar类型转为日期类型,然后从小到大排序 语法:select str_to_date(class_time,'%Y%m%d %H:%i:%s') ...
- 使用alibaba的json工具将String类型转为JSONArray类型
转化流程:先将输入流转为String类型,再使用alibaba的json转换工具,将字符串转化为json数组 SensorDevices sensorDevices = new SensorDevic ...
- c++中 string类型 转为 char []类型
将string类型转换为字符数组char [] char arr[50]; //数组大小根据s的大小确定 string s= "12slfjksldkfjlsfk"; int le ...
- js 字符串类型转为数组类型
以前从来没有想过这个转换,以为直接拼出来就可以了,今天同事问我这个问题,特记录如下. var test='["colkey", "col", "col ...
- linq to sql ,将var 类型转为 IList 类型
public void SOHSelecting(int startRowIndex, int maximumRows, string sortExpression, string location) ...
- django:将query-set类型转为json类型
import json data = json.dumps(list(my_table.objects.all().values())) return HttpResponse(data)
- java Int类型转为double 类型;string转double
int a=12; double b=(double)a; or double c=Double.valueOf((double)a); string a_s="12"; doub ...
- 【C#】string格式的日期转为DateTime类型及时间格式化处理方法
日期格式:yyyyMMdd HH:mm:ss(注意此字符串的字母大小写很严格) yyyy:代表年份 MM: 代表月份 dd: 代表天 HH: 代表小时(24小时制) mm: 代表分钟 ss: 代表秒 ...
- 前端String类型转JSON类型
在js中通过ajax获取数据后,赋值给前端树形插件zTree中的zNodes,但一直失败如图: 浏览器端报错: 于是我将zNodes变量的值直接写死,并打印这两个的值,如图 再次运行成功.浏览器控制台 ...
随机推荐
- 1112: [POI2008]砖块Klo
1112: [POI2008]砖块Klo Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1245 Solved: 426[Submit][Statu ...
- 很污的机器学习:从xhamster网站找到喜欢的片子
前言 最近迷上了看黄片(大雾).每次总是去搜索想看的片子,什么asian porn anal pussy 什么的我都不知道. 搜索着搜索着我手也累了,而且我喜欢的片子也是有一定的特征的,我不想把所有的 ...
- Android -- 仿小红书欢迎界面
1,觉得小红书的欢迎界面感觉很漂亮,就像来学习学习一下来实现类似于这种效果 原效果图如下: 2,根据效果我们来一点点分析 第一步:首先看一下我们的主界面布局文件视图效果如下: main_activi ...
- 一段从TXT导入excel的py脚本
#创建文件file = Workbook(encoding='utf-8')#创建sleettableTotalTime = file.add_sheet('TotalTime')#每列给出名称tab ...
- Eclipse使用Maven创建Web项目+整合SSM框架
一.准备环境: maven:apache-maven-3.2.3 jdk:jdk1.8.0_25 tomcat:tomcat-9.0 二.配置Maven.jdk 1.Window——>Prefe ...
- 高并发解决方案之Actor——第一节
还在为状态的并发控制而痛苦吗? 还在因为数据库瓶颈而痛苦吗? 还在因为缓存的实时性控制而痛苦吗? 还在为了想分布式,但又不知道怎么下手而痛苦吗? Actor欢迎你!!! 一.什么是 ...
- 用shell实现linux系统应用文件清理工具
用shell实现linux系统文件清理工具 1:原始需求 在系统运维中,会产生大量应用备份文件.落地文件等,这些文件需要定时清理.一般来说,都是使用crontab 拉起一个脚本来清理.类似这样: 30 ...
- 【转】如何成为一位优秀的创业CEO
编者按:本文来自 Ryan Allis,是一位来自旧金山的创业者和投资人.在 2003 年创立了 iContact,并任 CEO. 做创业公司的 CEO 可以说是世界上最有挑战性的事情之一.你得让客户 ...
- 一场完美的“秒杀”:API加速的业务逻辑
清晨,我被一个客户电话惊醒,客户异常焦急,寻问CDN能不能帮助他们解决“秒杀”的问题,他们昨天刚刚进行了“整点秒杀活动”,结果并发量过大,导致服务宕机,用户投诉. 为了理清思路,我问了对方三个问题: ...
- Python 一些有趣的技巧哦!
#Python 技巧命令 python 如一股清流,可以说屌到飞起,下面咱就来看看一些屌的东西 ### python2 最简单的web服务 ` python -m SimpleHTTPServer 8 ...