从客户端我得到一个列表,其中每个int值是Enum DayOfWeek的枚举int值。将多个列表枚举值写入另一个枚举
该列表仅包含那些在时间计划器中可见的int值(天)。
取int值列表例如0,1,2(星期日,星期一,星期二)你会如何将这些值写入DayOfWeek枚举中,并以一般方式工作7天或全天?
只知道星期六的索引是6,而我的DayOfWeek枚举的值是32。
[Flags]
public enum DayOfWeek
{
Sunday = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 4,
Thursday = 8,
Friday = 16,
Saturday = 32,
NotSet = 64,
}
UPDATE
这是MarcinJuraszek工作液代码只是改变了我的需求:
var visibleWeekDays = new List<int>();
for (int i = 0; i <= 6; i++)
{
visibleWeekDays.Add(i);
}
int allBitValues = visibleWeekDays.Select(i => (int)Math.Pow(2, ((i + 6) % 7))).Aggregate((e, i) => e | i);
AllVisibleDays = (VisibleDayOfWeek) allBitValues;
[Flags]
public enum VisibleDayOfWeek
{
None = 0,
Mon = 1,
Tue = 2,
Wed = 4,
Thu = 8,
Fri = 16,
Sat = 32,
Sun = 64
}
public VisibleDayOfWeek AllVisibleDays { get; set; }
上面的代码一周中的每一天写入VisibleDayOfWeek枚举可能现在可以轻松保存在数据库字段中。
根据微软MSDN的标志枚举现在已经设置为0再次其无值,其余值是电源2.
所以你从内置的星期几,你想将它们转换成你一周中的某天枚举获取值?这是你写的意思吗? – 2013-03-22 22:28:44
家伙,我已经更新了我的问题,改变了枚举值,以更好地适应那里周日有int值0 – Elisabeth 2013-03-22 22:37:39
我想你想扭转这种变化枚举原来DAYOFWEEK枚举值;如果只是这样,它默认为None,而不是Sunday。只有在未初始化或使用Default方法设置时。 – 2013-03-22 22:40:43