File tree Expand file tree Collapse file tree 2 files changed +34
-8
lines changed Expand file tree Collapse file tree 2 files changed +34
-8
lines changed Original file line number Diff line number Diff line change @@ -655,15 +655,28 @@ public string GenerateUrl()
655655 foreach ( var parsedFilter in _filters . Select ( PrepareFilter ) )
656656 query . Add ( parsedFilter . Key , parsedFilter . Value ) ;
657657
658- foreach ( var orderer in _orderers )
658+ if ( _orderers . Count > 0 )
659659 {
660- var nullPosAttr = orderer . NullPosition . GetAttribute < MapToAttribute > ( ) ;
661- var orderingAttr = orderer . Ordering . GetAttribute < MapToAttribute > ( ) ;
660+ var order = new StringBuilder ( ) ;
662661
663- if ( nullPosAttr == null || orderingAttr == null ) continue ;
662+ foreach ( var orderer in _orderers )
663+ {
664+ var nullPosAttr = orderer . NullPosition . GetAttribute < MapToAttribute > ( ) ;
665+ var orderingAttr = orderer . Ordering . GetAttribute < MapToAttribute > ( ) ;
666+
667+ if ( nullPosAttr == null || orderingAttr == null ) continue ;
668+
669+ if ( order . Length > 0 )
670+ order . Append ( "," ) ;
671+
672+ var selector = ! string . IsNullOrEmpty ( orderer . ForeignTable )
673+ ? orderer . ForeignTable + "(" + orderer . Column + ")"
674+ : orderer . Column ;
675+
676+ order . Append ( $ "{ selector } .{ orderingAttr . Mapping } .{ nullPosAttr . Mapping } ") ;
677+ }
664678
665- var key = ! string . IsNullOrEmpty ( orderer . ForeignTable ) ? $ "{ orderer . ForeignTable } .order" : "order" ;
666- query . Add ( key , $ "{ orderer . Column } .{ orderingAttr . Mapping } .{ nullPosAttr . Mapping } ") ;
679+ query . Add ( "order" , order . ToString ( ) ) ;
667680 }
668681
669682 if ( ! string . IsNullOrEmpty ( _columnQuery ) )
Original file line number Diff line number Diff line change @@ -424,13 +424,26 @@ public async Task TestOrderBy()
424424 {
425425 var client = new Client ( BaseUrl ) ;
426426
427+ // Test with a single orderer specified
427428 var orderedResponse = await client . Table < User > ( ) . Order ( "username" , Ordering . Descending ) . Get ( ) ;
428429 var unorderedResponse = await client . Table < User > ( ) . Get ( ) ;
429430
430- var supaOrderedUsers = orderedResponse . Models ;
431431 var linqOrderedUsers = unorderedResponse . Models . OrderByDescending ( u => u . Username ) . ToList ( ) ;
432432
433- CollectionAssert . AreEqual ( linqOrderedUsers , supaOrderedUsers ) ;
433+ CollectionAssert . AreEqual ( linqOrderedUsers , orderedResponse . Models ) ;
434+
435+ // Test with multiple orderers specified
436+ var multipleOrderedResponse = await client . Table < User > ( )
437+ . Order ( u => u . Username ! , Ordering . Descending )
438+ . Order ( u => u . Status ! , Ordering . Descending )
439+ . Get ( ) ;
440+
441+ linqOrderedUsers = unorderedResponse . Models
442+ . OrderByDescending ( u => u . Username )
443+ . ThenByDescending ( u => u . Status )
444+ . ToList ( ) ;
445+
446+ CollectionAssert . AreEqual ( linqOrderedUsers , multipleOrderedResponse . Models ) ;
434447 }
435448
436449 [ TestMethod ( "limit: basic" ) ]
You can’t perform that action at this time.
0 commit comments