Я немного застрял в следующем запросе linq.Я пытаюсь найти все заказы, которые имеют состояние, отличное от «Завершено», или которые были выполнены в течение последнего месяца.
_ordersRepository.GetAllByFilter(
o => o.OrderStatus
.OrderByDescending(os => os.StatusUpdate.Date)
.First()
// so at this point I have found the most recent status,
// and I need to do something like...
/* pseudo code */
WHERE
StatusUpdate.StatusType.Name != "Completed"
OR
StatusUpdate.Date > DateTime.Today.AddMonths(-1)
);
РЕДАКТИРОВАТЬ , чтобы уточнить: сложностьу меня есть то, что у меня нет прямого способа получить текущий статус, как Order.Status
.Исторически статус хранится в таблице StatusUpdate
.StatusUpdate
подключен к Order
с помощью таблицы компоновщиков OrderStatus
(один ордер имеет много статусных обновлений).Поэтому, если вы посмотрите на мой приведенный выше код, вы увидите, что я обнаруживаю текущий статус с:
Order.OrderStatus.OrderByDescending(os => os.StatusUpdate.Date).First()
Это дает мне StatusUpdate
соответствующийк текущему состоянию заказа.Теперь мне нужно проверить:
StatusUpdate.StatusType.Name == "Completed" // StatusType is like an enum lookup table
OR
StatusUpdate.Date > lastMonth
Я почти могу понять, как я мог бы сделать это, но не без ужасно неэффективных действий.