如何使用 lambda 表达式使用 EXIST 和 NOT EXIST 子句

How to use EXIST and NOT EXIST clause using lambda expression

我正在尝试过滤掉没有“已交付”事件类型但工作正常的订单。

List<Order> matchingOrders = xyzContext.Orders.Where(
                    o => o.FacilityId == facility.MasterFacilityId
                   && rxNumberList.Contains(o.RxNumber)
                   && o.OrderEvents.All(oe => oe.EventType.Code != EventTypeCode.Delivered)).ToList();

之后,我尝试过滤具有事件类型 "Ordered" 且不具有事件类型 "Delivered" 的订单,但我没有得到预期的结果。

List<Order> matchingOrders = xyzContext.Orders.Where(
                    o => o.FacilityId == facility.MasterFacilityId
                   && rxNumberList.Contains(o.RxNumber)
                   && o.OrderEvents.All(oe => oe.EventType.Code != EventTypeCode.Delivered && oe.EventType.Code == EventTypeCode.Ordered)).ToList();

试试这个:

List<Order> matchingOrders = xyzContext.Orders.Where(
                o => o.FacilityId == facility.MasterFacilityId
               && rxNumberList.Contains(o.RxNumber)
               && o.OrderEvents.All(oe => oe.EventType.Code != EventTypeCode.Delivered)
               &&  o.OrderEvents.Any(oe.EventType.Code == EventTypeCode.Ordered)).ToList();