需要匹配的枚举描述

using System;
using System.ComponentModel;
namespace ConsoleApp1
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            var value = GetEnumValueByDescription("在读", typeof(StudentStatusEnum));
            Console.WriteLine(value.ToString());
            Console.ReadKey();
        }
        #region 根据枚举描述获取枚举值
        /// <summary>
        /// 根据枚举描述获取枚举值
        /// </summary>
        /// <param name="description">需要匹配的枚举描述</param>
        /// <param name="en">枚举类型</param>
        /// <returns></returns>
        public static object GetEnumValueByDescription(string description, Type en)
        {
            var fields = en.GetFields();
            for (int i = 1, count = fields.Length; i < count; i++)
            {
                var value = (int)Enum.Parse(en, fields[i].Name);
                var enumAttributes = (DescriptionAttribute[])fields[i].GetCustomAttributes(typeof(DescriptionAttribute), false);
                if (enumAttributes.Length > 0)
                {
                    var desc = enumAttributes[0].Description;
                    if (desc == description)
                    {
                        return value;
                    }
                }
            }

            return null;
        }
        #endregion
    }
    /// <summary>
    ///     学生状态
    /// </summary>
    public enum StudentStatusEnum
    {
        /// <summary>
        ///     在读
        /// </summary>
        [Description("在读")] Study = 0,
        /// <summary>
        ///     毕业
        /// </summary>
        [Description("毕业")] Graduate = 1,
        /// <summary>
        ///     退学
        /// </summary>
        [Description("退学")] Leave = 2,
        /// <summary>
        ///     休学
        /// </summary>
        [Description("休学")] Suspend = 3
    }
}
原文地址:https://www.cnblogs.com/happen-/p/10973344.html