@@ -519,7 +519,7 @@ public void OrdersWithSubquery9()
519519
520520 var ordersQuery = db . Orders
521521 . Where ( x => x . Employee . EmployeeId > 5 )
522- . OrderBy ( x => x . OrderId )
522+ . OrderByDescending ( x => x . OrderId )
523523 . Take ( 2 ) ;
524524
525525 var orderLinesFuture = db . OrderLines
@@ -531,7 +531,26 @@ public void OrdersWithSubquery9()
531531 var orderLines = orderLinesFuture . ToList ( ) ;
532532
533533 Assert . That ( orders . Count , Is . EqualTo ( 2 ) , nameof ( orders ) ) ;
534- Assert . That ( orderLines . Count , Is . EqualTo ( 6 ) , nameof ( orderLines ) ) ;
534+ Assert . That ( orderLines . Count , Is . EqualTo ( 4 ) , nameof ( orderLines ) ) ;
535+ }
536+
537+ [ Test ]
538+ public void OrdersWithSubquery9A ( )
539+ {
540+ var ordersQuery = db . Orders
541+ . Where ( x => x . Employee . EmployeeId > 5 )
542+ . OrderByDescending ( x => x . OrderId ) ;
543+
544+ var orderLinesFuture = db . OrderLines
545+ . Where ( x => ordersQuery . Any ( o => o == x . Order ) )
546+ . OrderBy ( x => x . Id )
547+ . ToFuture ( ) ;
548+
549+ var orders = ordersQuery . ToFuture ( ) . ToList ( ) ;
550+ var orderLines = orderLinesFuture . ToList ( ) ;
551+
552+ Assert . That ( orders . Count , Is . EqualTo ( 286 ) , nameof ( orders ) ) ;
553+ Assert . That ( orderLines . Count , Is . EqualTo ( 711 ) , nameof ( orderLines ) ) ;
535554 }
536555
537556 [ Test ( Description = "GH2479" ) ]
@@ -542,7 +561,7 @@ public void OrdersWithSubquery10()
542561
543562 var ordersQuery = db . Orders
544563 . Where ( x => x . Employee . EmployeeId > 5 )
545- . OrderBy ( x => x . OrderId )
564+ . OrderByDescending ( x => x . OrderId )
546565 . Take ( 2 ) ;
547566
548567 var productsQuery = ordersQuery . SelectMany ( x => x . OrderLines ) . Select ( x => x . Product ) ;
@@ -555,7 +574,27 @@ public void OrdersWithSubquery10()
555574 var products = productsFuture . ToList ( ) ;
556575
557576 Assert . That ( orders . Count , Is . EqualTo ( 2 ) , nameof ( orders ) ) ;
558- Assert . That ( products . Count , Is . EqualTo ( 6 ) , nameof ( products ) ) ;
577+ Assert . That ( products . Count , Is . EqualTo ( 4 ) , nameof ( products ) ) ;
578+ }
579+
580+ [ Test ]
581+ public void OrdersWithSubquery10A ( )
582+ {
583+ var ordersQuery = db . Orders
584+ . Where ( x => x . Employee . EmployeeId > 5 )
585+ . OrderByDescending ( x => x . OrderId ) ;
586+
587+ var productsQuery = ordersQuery . SelectMany ( x => x . OrderLines ) . Select ( x => x . Product ) ;
588+ var productsFuture = db . Products
589+ . Where ( x => productsQuery . Contains ( x ) )
590+ . OrderBy ( x => x . ProductId )
591+ . ToFuture ( ) ;
592+
593+ var orders = ordersQuery . ToFuture ( ) . ToList ( ) ;
594+ var products = productsFuture . ToList ( ) ;
595+
596+ Assert . That ( orders . Count , Is . EqualTo ( 286 ) , nameof ( orders ) ) ;
597+ Assert . That ( products . Count , Is . EqualTo ( 77 ) , nameof ( products ) ) ;
559598 }
560599
561600 [ Test ( Description = "GH2479" ) ]
@@ -579,6 +618,21 @@ public void OrdersWithSubquery11()
579618 Assert . That ( productsNotInLargestOrders . Count , Is . EqualTo ( 49 ) , nameof ( productsNotInLargestOrders ) ) ;
580619 }
581620
621+ [ Test ]
622+ public void OrdersWithSubquery11A ( )
623+ {
624+ var ordersQuery = db . Orders
625+ . OrderByDescending ( x => x . OrderLines . Count ) . ThenBy ( x => x . OrderId ) ;
626+
627+ var orderLineQuery = ordersQuery . SelectMany ( x => x . OrderLines ) ;
628+ var productsNotInLargestOrders = db . Products
629+ . Where ( x => orderLineQuery . All ( p => p . Product != x ) )
630+ . OrderBy ( x => x . ProductId )
631+ . ToList ( ) ;
632+
633+ Assert . That ( productsNotInLargestOrders . Count , Is . EqualTo ( 0 ) , nameof ( productsNotInLargestOrders ) ) ;
634+ }
635+
582636 [ Test ( Description = "NH-2654" ) ]
583637 public void CategoriesWithDiscountedProducts ( )
584638 {
0 commit comments