На моей странице приложений есть много событий, доступных для регистрации.Этот метод возвращает все активные события.но есть проблема, например, есть событие сегодня в 11 часов утра.после 11 часов утра он не должен показываться логически, но показывается как активный.И это не скрывается до полуночи.Таким образом, он становится неактивным при изменении даты (т. Е. В конце периода не учитываются часы) ... Каков наилучший способ изменить DateTime, чтобы событие стало неактивным по истечении заданного часа, а нена следующий день?
public IPagedList<Domain.Event> SearchEventsPublic(long[] eventCategoryTypeIds = null,
long[] locationIds = null,
DateTime? startDate = null,
DateTime? endDate = null,
int pageIndex = 0,
int pageSize = int.MaxValue)
{
var query = _eventRepository.Table;
// get event by filter
if (eventCategoryTypeIds != null && eventCategoryTypeIds.Length > 0)
query = query.Where(c => eventCategoryTypeIds.Contains(c.EventCategoryId));
if (locationIds != null && locationIds.Length > 0)
query = query.Where(c => locationIds.Contains(c.LocationId));
var minDate = DateTime.Now;
if (startDate.HasValue && startDate.Value > minDate)
{
minDate = startDate.Value.Date;
}
query = query.Where(c => c.StartDateTime >= minDate ||
(c.PrePurchase && (c.ParentId == null || c.ParentId == 0)));
if (endDate.HasValue)
{
var maxDate = endDate.Value.Date.AddDays(1).AddTicks(-1);
query = query.Where(c => c.StartDateTime <= maxDate ||
(c.PrePurchase && (c.ParentId == null || c.ParentId == 0)));
}
query = query.OrderBy(c => c.PrePurchase ? 0 : 1).ThenBy(c => c.StartDateTime);
return new PagedList<Domain.Event>(query.AsQueryable(), pageIndex, pageSize);
}