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