我正在查看https://msdn.microsoft.com/en-us/library/windows/desktop/aa384024%28v=vs.85%29.aspx

星期日= 1
星期一= 2
星期二= 4
星期三= 8
星期四= 16
星期五= 32
星期六= 64


此属性包含“计划任务”中所选DayOfWeek的聚合值。例如,值66是星期一或星期日。

我想将此值转换为List(of DayOfWeek)。

像这样转换值的最佳方法是什么?

最佳答案

var weekDays = (int)daysOfWeek;
var weekDayEnumerable = Enumerable
    .Range(0, 7)
    .Where(i => { var isMatch = (weekDays & 1) == 1; weekDays >>= 1; return isMatch; })
    .Select(i => (DayOfWeek)i)
    .ToList();


好的,也许为避免循环太过努力了,但是如果您愿意,也可以转换为类似的for循环。

更新:

不做任何改动的版本:

var weekDays = (int)daysOfWeek;
var weekDayEnumerable = Enumerable
    .Range(0, 7)
    .Where(i => (weekDays & (1 << i)) > 0)
    .Select(i => (DayOfWeek)i)
    .ToList();

关于c# - 将WeeklyTrigger.DaysOfWeek转换为(DayOfWeek)的列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29684103/

10-11 11:00