День добрый! На странице приложения показаны ивенты доступные для регистрации. Данный метод возвращает все активные ивенты. но проблема в том, что, к примеру: есть ивент сегодня в 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);
}
Разобрался. Я использую startDate.Value.Date
и это возвращает именно дату как часть DateTime
. Так что удалил .Date
как привязку только к числу и сейчас все работает верно.
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;
}
query = query.Where(c => c.StartDateTime >= minDate ||
(c.PrePurchase && (c.ParentId == null || c.ParentId == 0)));
if (endDate.HasValue)
{
var maxDate = endDate.Value.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);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Здравствуйте начитался про DDD и одно из ЖЕСТКИХ требований следования этой концепции это работа с репозиторием только в типах "Корень Агрегации"
Есть база данный, из неё в listbox, в поле DisplayMember, вывожу из таблицы Agent, значения столбца FirstNameКак можно вывести через пробел значения столбцов...
Есть у меня программка на C#, которая тянет данные и пишет в MS SQLДля этого она использует DataSet
Задача заключается в следующемНеобходимо работать с двумя COM портами одновременно