Я хочу иметь возможность поиска по полю DateTime не только по диапазону дат, но и по диапазону времени.Например, «Получите все записи за май, созданные с 13:00 до 15:00».SQL, который я ищу, генерирует:
WHERE CreatedOn BETWEEN '05/01/2010' AND '06/01/2010' AND CONVERT(time(4), CreatedOn) BETWEEN '01:00 PM' AND '03:00 PM'
Я не могу понять, как получить лямбда-выражение, чтобы попасть туда.У кого-нибудь есть подсказка?У меня есть System.Linq.Dynamic в моем проекте.Подобно тому, как вы можете передать строку как предложение OrderBy, я подумал, что смогу сделать то же самое с методом Where следующим образом: *
results = results.Where("CONVERT(time(4), OccurredOn) BETWEEN '{0}' AND '{1}'", Criteria.OffenseTimeStart, Criteria.OffenseTimeEnd);
Но это вызывает исключение в System.Linq..dynamic.У кого-нибудь есть указатели?
СПАСИБО ЗА ПОМОЩЬ!Вот мой рабочий код.Я выставил свои критерии критерия времени как TimeSpans:
if (Criteria.OffenseDateStart.HasValue)
results = results.Where(o => o.OccurredOn >= Criteria.OffenseDateStart);
if (Criteria.OffenseDateEnd.HasValue)
results = results.Where(o => o.OccurredOn <= Criteria.OffenseDateEnd);
if (Criteria.OffenseTimeStart.HasValue)
results = results.Where(o => o.OccurredOn.TimeOfDay >= Criteria.OffenseTimeStart);
if (Criteria.OffenseTimeEnd.HasValue)
results = results.Where(o => o.OccurredOn.TimeOfDay <= Criteria.OffenseTimeEnd);