@@ -519,7 +519,7 @@ public void OrdersWithSubquery9()
519
519
520
520
var ordersQuery = db . Orders
521
521
. Where ( x => x . Employee . EmployeeId > 5 )
522
- . OrderBy ( x => x . OrderId )
522
+ . OrderByDescending ( x => x . OrderId )
523
523
. Take ( 2 ) ;
524
524
525
525
var orderLinesFuture = db . OrderLines
@@ -531,7 +531,26 @@ public void OrdersWithSubquery9()
531
531
var orderLines = orderLinesFuture . ToList ( ) ;
532
532
533
533
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 ) ) ;
535
554
}
536
555
537
556
[ Test ( Description = "GH2479" ) ]
@@ -542,7 +561,7 @@ public void OrdersWithSubquery10()
542
561
543
562
var ordersQuery = db . Orders
544
563
. Where ( x => x . Employee . EmployeeId > 5 )
545
- . OrderBy ( x => x . OrderId )
564
+ . OrderByDescending ( x => x . OrderId )
546
565
. Take ( 2 ) ;
547
566
548
567
var productsQuery = ordersQuery . SelectMany ( x => x . OrderLines ) . Select ( x => x . Product ) ;
@@ -555,7 +574,27 @@ public void OrdersWithSubquery10()
555
574
var products = productsFuture . ToList ( ) ;
556
575
557
576
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 ) ) ;
559
598
}
560
599
561
600
[ Test ( Description = "GH2479" ) ]
@@ -579,6 +618,21 @@ public void OrdersWithSubquery11()
579
618
Assert . That ( productsNotInLargestOrders . Count , Is . EqualTo ( 49 ) , nameof ( productsNotInLargestOrders ) ) ;
580
619
}
581
620
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
+
582
636
[ Test ( Description = "NH-2654" ) ]
583
637
public void CategoriesWithDiscountedProducts ( )
584
638
{
0 commit comments