[Flags]
public enum DateEnum
{
/// <summary>
/// 星期一
/// </summary>
Monday = 0x1, //1
/// <summary>
/// 星期二
/// </summary>
Tuesday = 0x2,//2
/// <summary>
/// 星期三
/// </summary>
Wednesday = 0x4,//4
/// <summary>
/// 星期四
/// </summary>
Thursday = 0x8,//8
/// <summary>
/// 星期五
/// </summary>
Friday = 0x10,//16
/// <summary>
/// 星期六
/// </summary>
Saturday = 0x20,//32
/// <summary>
/// 星期日
/// </summary>
Sunday = 0x40 //64
}
/// <summary>
/// -1不限 1星期一 2星期二 4星期三 8星期四 16星期五 32星期六 64星期日(多选)
/// </summary>
[Description("0不限 1星期一 2星期二 4星期三 8星期四 16星期五 32星期六 64星期日(多选)")]
public DateEnum day { get; set; }
- 前端如果选中星期一、星期二,则需要传[1,2],后端获取值,方法如下
/// <summary>
///计算前端传过来的数组的组合值
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
public static int GetSum(this int[] lstNum)
{
int result = 0;
if (lstNum!= null)
{
foreach (int item in lstNum)
{
if (item == 0)
{
return 0;
}
else if (!CheckItem(item))
{
throw new System.Exception("非法的uint数据");
}
result |= item;
}
}
else
{
}
return result;
}
static bool ChecItem(int num)
{
return num > 0 && (num & (num - 1)) == 0;
}
if (model.day != (DateEnum)request.work_day.GetVal())
{
...
}
- 数据库中存的是位的几个数之和,如库中存的是14,判断选中的是哪几个时,需要循环所有数,与14进行位与 运算,大于0,则表示存在。
string v1 = "";
Dictionary<int, string> dic = new Dictionary<int, string> { };
dic.Add(1, "周一");
dic.Add(2, "周二");
dic.Add(4, "周三");
dic.Add(8, "周四");
dic.Add(16, "周五");
dic.Add(32, "周六");
dic.Add(64, "周日");
foreach (var item in dic)
{
if ((item.Key & (int)model.work_day) > 0)
{
v1 += item.Value + " ";
}
}