Entity framework LINQ查询22:30和1:00之间的时间戳

Entity framework LINQ查询22:30和1:00之间的时间戳,entity-framework,linq,Entity Framework,Linq,我正在尝试使用LINQ获取时间戳位于星期六或星期日22:30-24:00或00:00-1:00之间的实体列表,我希望在一个LINQ查询中设置这两个时间范围,但我无法这样做,不得不按如下方式将其分解: weekdayNight = intervalInformations.Where(ii => ii.IntervalPeriodTimestamp.TimeOfDay >= new TimeSpan(22, 30, 0)

我正在尝试使用LINQ获取时间戳位于星期六或星期日22:30-24:00或00:00-1:00之间的实体列表,我希望在一个LINQ查询中设置这两个时间范围,但我无法这样做,不得不按如下方式将其分解:

weekdayNight = intervalInformations.Where(ii => ii.IntervalPeriodTimestamp.TimeOfDay >= new TimeSpan(22, 30, 0)
                                                     && ii.IntervalPeriodTimestamp.TimeOfDay <= new TimeSpan(23, 30, 0)
                                                     && ii.IntervalPeriodTimestamp.DayOfWeek != DayOfWeek.Saturday
                                                     && ii.IntervalPeriodTimestamp.DayOfWeek != DayOfWeek.Sunday
                                                     && !dates.Contains(ii.IntervalPeriodTimestamp.ToShortDateString()))
                                                     .OrderBy(ii => ii.IntervalPeriodTimestamp)
                                                     .ToList();


weekdayNight2 = intervalInformations.Where(ii => ii.IntervalPeriodTimestamp.TimeOfDay >= new TimeSpan(0, 0, 0)
                                                     && ii.IntervalPeriodTimestamp.TimeOfDay <= new TimeSpan(0, 30, 0)
                                                     && ii.IntervalPeriodTimestamp.DayOfWeek != DayOfWeek.Saturday
                                                     && ii.IntervalPeriodTimestamp.DayOfWeek != DayOfWeek.Sunday
                                                     && !dates.Contains(ii.IntervalPeriodTimestamp.ToShortDateString()))
                                                     .OrderBy(ii => ii.IntervalPeriodTimestamp)
                                                     .ToList();

weekdayNight.Add(weekdayNight2);
weekdayNight=间隔信息。其中(ii=>ii.IntervalPeriodTimestamp.TimeOfDay>=新的时间跨度(22,30,0)
&&ii.intervalperiodtimstamp.TimeOfDay ii.intervalperiodtimstamp)
.ToList();
weekdayNight2=间隔信息。其中(ii=>ii.IntervalPeriodTimestamp.TimeOfDay>=新的时间跨度(0,0,0)
&&ii.intervalperiodtimstamp.TimeOfDay ii.intervalperiodtimstamp)
.ToList();
添加(weekdayNight2);

我如何编写此查询而不需要连接两个不同的查询

在定义时间间隔的两个条件之间添加一个

weekdayNight = intervalInformations.Where(ii =>
    ((ii.IntervalPeriodTimestamp.TimeOfDay >= new TimeSpan(22, 30, 0) && ii.IntervalPeriodTimestamp.TimeOfDay <= new TimeSpan(23, 30, 0))
||  (ii.IntervalPeriodTimestamp.TimeOfDay >= new TimeSpan(0, 0, 0) && ii.IntervalPeriodTimestamp.TimeOfDay <= new TimeSpan(0, 30, 0)))
    && ii.IntervalPeriodTimestamp.DayOfWeek != DayOfWeek.Saturday
    && ii.IntervalPeriodTimestamp.DayOfWeek != DayOfWeek.Sunday
    && !dates.Contains(ii.IntervalPeriodTimestamp.ToShortDateString())
)
.OrderBy(ii => ii.IntervalPeriodTimestamp)
.ToList();
weekdayNight=间隔信息。其中(ii=>
((ii.IntervalPeriodTimestamp.TimeOfDay>=新时间跨度(22,30,0)和&ii.IntervalPeriodTimestamp.TimeOfDay=新时间跨度(0,0)和&ii.IntervalPeriodTimestamp.TimeOfDay ii.IntervalPeriodTimestamp)
.ToList();
注意:您的查询似乎排除了23:30到午夜之间的最后半小时。如果这不是有意的,您可以进一步简化查询:

weekdayNight = intervalInformations.Where(ii =>
    (ii.IntervalPeriodTimestamp.TimeOfDay >= new TimeSpan(22, 30, 0)
||  ii.IntervalPeriodTimestamp.TimeOfDay <= new TimeSpan(0, 30, 0))
    && ii.IntervalPeriodTimestamp.DayOfWeek != DayOfWeek.Saturday
    && ii.IntervalPeriodTimestamp.DayOfWeek != DayOfWeek.Sunday
    && !dates.Contains(ii.IntervalPeriodTimestamp.ToShortDateString())
)
.OrderBy(ii => ii.IntervalPeriodTimestamp)
.ToList();
weekdayNight=间隔信息。其中(ii=>
(ii.IntervalPeriodTimestamp.TimeOfDay>=新的时间跨度(22,30,0)
||ii.intervalperiodtimstamp.TimeOfDay ii.intervalperiodtimstamp)
.ToList();