Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#根据轮班情况在一个月内安排非工作日_C#_Linq_Datetime - Fatal编程技术网

c#根据轮班情况在一个月内安排非工作日

c#根据轮班情况在一个月内安排非工作日,c#,linq,datetime,C#,Linq,Datetime,我有一份员工轮班天数(工作日)列表,如下所示: List<int> workingDays = new List<int>(); workingDays.Add(1); // monday workingDays.Add(2); // tuesday workingDays.Add(3); // wednesday workingDays.Add(5); // friday 等等 关于如何得到这份名单有什么线索吗 更新: 这是我的尝试: for (int day = 1

我有一份员工轮班天数(工作日)列表,如下所示:

List<int> workingDays = new List<int>();
workingDays.Add(1); // monday
workingDays.Add(2); // tuesday
workingDays.Add(3); // wednesday
workingDays.Add(5); // friday
等等

关于如何得到这份名单有什么线索吗

更新:

这是我的尝试:

for (int day = 1; day <= DateTime.DaysInMonth(currentDate.Year, currentDate.Month); day++) {
    DateTime dt = new DateTime(currentDate.Year, currentDate.Month, day);
    var shiftDay = shifts.Where(s => (int) dt.DayOfWeek - 1 == s.Day && s.IsActive).First();

    if (shiftDay == null) {

        // this is a non-working day because wasn't found in the shift List

    }
}
for(int day=1;day(int)dt.DayOfWeek-1==s.day&&s.IsActive);
if(shiftDay==null){
//这是非工作日,因为在班次列表中找不到
}
}

您应该使用
DayOfWeek
枚举而不是int,以使代码更具可读性,更不容易出错:

List<DayOfWeek> workingDays = new List<DayOfWeek>() { 
    DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Friday
};


var nonWorkingDays = Enumerable.Range(1, 31)
                               .Select(x => new DateTime(2014, 7, x))
                               .Where(d => !workingDays.Contains(d.DayOfWeek))
                               .ToList();
List workingDays=new List(){
星期一,星期一,星期二,星期二,星期三,星期五
};
var非工作日=可枚举范围(1,31)
.选择(x=>新日期时间(2014年7月x日))
.Where(d=>!workingDays.Contains(d.DayOfWeek))
.ToList();

是否有一种方法可以使用Int值来执行此操作?您可以将
Int
DayOfWeek
强制转换为彼此。您应该能够找出如何使它在
int
s中工作。
List<DayOfWeek> workingDays = new List<DayOfWeek>() { 
    DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Friday
};


var nonWorkingDays = Enumerable.Range(1, 31)
                               .Select(x => new DateTime(2014, 7, x))
                               .Where(d => !workingDays.Contains(d.DayOfWeek))
                               .ToList();