다음 linq 쿼리에 조금 갇혀 있습니다. "완료"이외의 상태 또는 지난 달 내에 완료된 모든 주문을 찾으려고합니다.Linq 람다 쿼리의 OR 논리에 대한 도움말
_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
테이블에 보관됩니다. A StatusUpdate
은 OrderStatus
링커 테이블 (하나의 주문에는 많은 StatusUpdate가 있음)으로 Order
에 연결됩니다. 위 내 시도 코드를 보면, 당신은 내가 함께 현재 상태를 알아내는하고 볼 수 있도록 :
Order.OrderStatus.OrderByDescending(os => os.StatusUpdate.Date).First()
이것은 현재 주문 상태에 해당 나에게 StatusUpdate
을 제공합니다. 지금 확인해야합니다
StatusUpdate.StatusType.Name == "Completed" // StatusType is like an enum lookup table
OR
StatusUpdate.Date > lastMonth
내가 거의 얻을 수있는 방법 I 수 그것을 할 수 있지만 끔찍하게 비효율적 않고.
예 내가 원하는 것, 감사합니다. 나는 "let"에 대해 몰랐다. 단 하나의 문제 : 내 저장소에 대한 내 GetAllByFilter 메서드는 람다 매개 변수를 사용합니다. 이 쿼리를 람다 구문으로 작성할 수 있습니까? – fearofawhackplanet