Flags列舉型別轉換、判斷和提取
阿新 • • 發佈:2019-02-02
列舉類:
[Flags] public enum ChooseScheduleDay { /// <summary> /// 週一 /// </summary> Monday = 1, /// <summary> /// 週二 /// </summary> Tuesday = 2, /// <summary> /// 週三 /// </summary> Wednesday = 4, /// <summary> /// 週四 /// </summary> Thursday = 8, /// <summary> /// 週五 /// </summary> Friday = 16, /// <summary> /// 週六 /// </summary> Saturday = 32, /// <summary> /// 週日 /// </summary> Sunday = 64, /// <summary> /// 法定工作日 /// </summary> LegalWorkingDay = Monday | Tuesday | Wednesday | Thursday | Friday, }
獲取列舉值集合方法:
/// <summary>
/// 獲取列舉集合
/// </summary>
/// <returns></returns>
protected virtual string[] GetEnumList()
{
return Enum.GetNames(typeof(ChooseScheduleDay));
}
根據資料庫中取出Flags列舉值獲取出包含的列舉值:
/// <summary> /// 獲取包含的工作日(星期幾) /// </summary> /// <param name="scheduleDay">要判斷的列舉</param> /// <returns>列舉集合</returns> protected virtual List<string> GetScheduleDays(ChooseScheduleDay scheduleDay) { //存放工作日(星期幾)的集合 var hasScheduleDayList = new List<string>(); foreach (var item in GetEnumList()) { var enumScheduleDay = ((ChooseScheduleDay)Enum.Parse(typeof(ChooseScheduleDay), item)); var has = ((scheduleDay & enumScheduleDay) != 0); if (has) { hasScheduleDayList.Add(item); } } return hasScheduleDayList; }
使用方法:
注:
//entity.ChooseScheduleDay 是從資料庫讀取出來的值 該值儲存於資料庫的時候是int 儲存的是列舉值的(num)值相加的和。
//hasScheduleDays 結果=List<string> 一個字串陣列。
var hasScheduleDays = GetScheduleDays(entity.ChooseScheduleDay);