>>> var startTime = new DateTime(1900, 1, 1, beginDateTime.Hour, beginDateTime.Minute, 0); >>> var endTime = new DateTime(1900, 1, 1, endDateTime.Hour, endDateTime.Minute, 0); >>> var daysOfWeek = dailyLimits.Where(dl => dl.Selected == true).Select(ds => ds.WeekDay).ToList(); >>> if (daysOfWeek.Count() < 7) // not all days of the week selected >>> { >>> query = query.Where(m4s => DateTime.Parse("01-01-1900 " + m4s.StartTime.Value.ToShortTimeString()) <= endTime && >>> DateTime.Parse("01-01-1900 " + m4s.EndTime.Value.ToShortTimeString()) >= startTime && daysOfWeek.Contains((short)m4s.StartTime.Value.DayOfWeek)); >>> }>>>
>-- Region Parameters >DECLARE @p0 Int = 1 >DECLARE @p1 Int = 2 >DECLARE @p2 DateTime = '1900-01-01 00:00:00.000' >DECLARE @p3 DateTime = '1900-01-01 20:00:00.000' >DECLARE @p4 DateTime = '1900-01-01 00:00:00.000' >DECLARE @p5 DateTime = '1900-01-01 08:00:00.000' >-- EndRegion >SELECT TOP (300) [t0].[id] AS [Id], [t0].[type] AS [Type], [t0].[start_time] AS [Start_time], [t0].[end_time] AS [End_time] >FROM [max4sale] AS [t0] >WHERE ((CONVERT(Int,(DATEPART(dw, [t0].[start_time]) + (@@DATEFIRST) + 6) % 7)) IN (@p0, @p1)) AND (DATEADD(ms, ((CONVERT(BigInt,((CONVERT(BigInt,DATEPART(HOUR, [t0].[start_time]))) * 36000000000) + >((CONVERT(BigInt,DATEPART(MINUTE, [t0].[start_time]))) * 600000000) + >((CONVERT(BigInt,DATEPART(SECOND, [t0].[start_time]))) * 10000000) + ((CONVERT(BigInt,DATEPART(MILLISECOND, [t0].[start_time]))) * 10000))) / 10000) % 86400000, >DATEADD(day, (CONVERT(BigInt,((CONVERT(BigInt,DATEPART(HOUR, [t0].[start_time]))) * 36000000000) + >((CONVERT(BigInt,DATEPART(MINUTE, [t0].[start_time]))) * 600000000) + >((CONVERT(BigInt,DATEPART(SECOND, [t0].[start_time]))) * 10000000) + >((CONVERT(BigInt,DATEPART(MILLISECOND, [t0].[start_time]))) * 10000))) / 864000000000, @p2)) <= @p3) AND (DATEADD(ms, ((CONVERT(BigInt,((CONVERT(BigInt,DATEPART(HOUR, [t0].[end_time]))) * 36000000000) + >((CONVERT(BigInt,DATEPART(MINUTE, [t0].[end_time]))) * 600000000) + >((CONVERT(BigInt,DATEPART(SECOND, [t0].[end_time]))) * 10000000) + >((CONVERT(BigInt,DATEPART(MILLISECOND, [t0].[end_time]))) * 10000))) / 10000) % 86400000, DATEADD(day, (CONVERT(BigInt,((CONVERT(BigInt,DATEPART(HOUR, [t0].[end_time]))) * 36000000000) + >((CONVERT(BigInt,DATEPART(MINUTE, [t0].[end_time]))) * 600000000) + >((CONVERT(BigInt,DATEPART(SECOND, [t0].[end_time]))) * 10000000) + ((CONVERT(BigInt,DATEPART(MILLISECOND, [t0].[end_time]))) * 10000))) / 864000000000, @p4)) >= @p5) >>
var startTime = new TimeSpan(beginDateTime.Hour, beginDateTime.Minute, 0); // Or maybe just take beginDateTime.TimeOfDay? var endTime = new TimeSpan(endDateTime.Hour, endDateTime.Minute, 0); var daysOfWeek = dailyLimits.Where(dl => dl.Selected == true).Select(ds => ds.WeekDay).ToList(); if (daysOfWeek.Count() < 7) // not all days of the week selected { query = query.Where(m4s => m4s.StartTime.Value.TimeOfDay <= endTime && m4s.EndTime.Value.TimeOfDay >= startTime && daysOfWeek.Contains((short)m4s.StartTime.Value.DayOfWeek)); }That may remove some of the convert/dateparts, since you don't need to add them anymore.