我有一个时间表列表,它们都在不同的日期开始和结束。当我搜索一周中的所有日程表时,我想列出该周范围内的所有时间段,甚至包括那些可能在外部开始或结束但在一周内有一天或几天的时间段,请参见图片示例:



为了解决这个问题,我编写了以下代码:

var weekStart = DateTime.Now().Date;
var weekEnd = weekStart.AddDays(6);

var thisWeek = schedules.Where(x =>
        (x.ScheduleStartDate >= weekStart && x.ScheduleStartDate <= weekEnd && x.ScheduleEndDate <= weekEnd && x.ScheduleEndDate >= weekStart) ||
        (x.ScheduleStartDate <= weekStart && x.ScheduleEndDate <= weekEnd && x.ScheduleEndDate >= weekStart) ||
        (x.ScheduleStartDate >= weekStart && x.ScheduleStartDate <= weekEnd && x.ScheduleEndDate >= weekEnd) ||
        (x.ScheduleStartDate <= weekStart && x.ScheduleEndDate >= weekEnd)
    );


这段代码运行良好,所以我现在的问题是是否有一种方法可以对其进行优化,或者只是使代码看起来更好?

最佳答案

您可以使用具有好名字的函数(甚至4个函数)来代替长布尔表达式。
该函数当然不会做任何新的事情,但是以后您将具有更好的代码可读性

10-08 18:16