@@ -75,16 +75,15 @@ public static DataResult<T> ToDataResult<T>(this IQueryable<T> query, DataReques
7575 }
7676 else
7777 {
78- foreach ( var item in request . order )
78+ query = request . order [ 0 ] . dir != "asc"
79+ ? ( IQueryable < T > ) query . OrderByDescending < T > ( request . columns [ request . order [ 0 ] . column ] . data )
80+ : ( IQueryable < T > ) query . OrderBy < T > ( request . columns [ request . order [ 0 ] . column ] . data ) ;
81+
82+ for ( var i = 1 ; i < request . order . Count ( ) ; i ++ )
7983 {
80- if ( item . dir == "asc" )
81- {
82- query = query . OrderBy ( request . columns [ item . column ] . data ) ;
83- }
84- else
85- {
86- query = query . OrderByDescending ( request . columns [ item . column ] . data ) ;
87- }
84+ query = request . order [ i ] . dir != "asc"
85+ ? ( IQueryable < T > ) query . ThenByDescending < T > ( request . columns [ request . order [ i ] . column ] . data )
86+ : ( IQueryable < T > ) query . ThenBy < T > ( request . columns [ request . order [ i ] . column ] . data ) ;
8887 }
8988 }
9089
@@ -109,14 +108,32 @@ private static Expression<Func<T, bool>> GetExpression<T>(Operand operand, strin
109108 } ) ;
110109 }
111110
112- private static IOrderedQueryable < T > OrderBy < T > ( this IQueryable < T > query , string memberName )
111+ private static IOrderedQueryable < T > OrderBy < T > (
112+ this IQueryable < T > query ,
113+ string memberName )
114+ {
115+ return query . OrderByCreate < T > ( memberName , nameof ( OrderBy ) ) ;
116+ }
117+
118+ private static IOrderedQueryable < T > ThenBy < T > (
119+ this IQueryable < T > query ,
120+ string memberName )
121+ {
122+ return query . OrderByCreate < T > ( memberName , nameof ( ThenBy ) ) ;
123+ }
124+
125+ private static IOrderedQueryable < T > OrderByDescending < T > (
126+ this IQueryable < T > query ,
127+ string memberName )
113128 {
114- return OrderByCreate ( query , memberName , "OrderBy" ) ;
129+ return query . OrderByCreate < T > ( memberName , nameof ( OrderByDescending ) ) ;
115130 }
116131
117- private static IOrderedQueryable < T > OrderByDescending < T > ( this IQueryable < T > query , string memberName )
132+ private static IOrderedQueryable < T > ThenByDescending < T > (
133+ this IQueryable < T > query ,
134+ string memberName )
118135 {
119- return OrderByCreate ( query , memberName , "OrderByDescending" ) ;
136+ return query . OrderByCreate < T > ( memberName , nameof ( ThenByDescending ) ) ;
120137 }
121138
122139 private static IOrderedQueryable < T > OrderByCreate < T > ( this IQueryable < T > query , string memberName , string direction )
0 commit comments