@@ -17,9 +17,6 @@ public static IQueryable<T> Sort<T>(this IQueryable<T> data, List<Sort> sorts)
1717
1818 foreach ( var sort in sorts )
1919 {
20- var propInfo = CommonExtension . GetPropertyInfo ( typeof ( T ) , sort . Field ) ;
21- var expr = ExpressionExtension . BuildLambda ( typeof ( T ) , propInfo ) ;
22-
2320 string methodName = string . Empty ;
2421
2522 if ( isFirst )
@@ -32,21 +29,23 @@ public static IQueryable<T> Sort<T>(this IQueryable<T> data, List<Sort> sorts)
3229 methodName = sort . Dir == "asc" ? "ThenBy" : "ThenByDescending" ;
3330 }
3431
35- var method = typeof ( Queryable ) . GetMethods ( ) . FirstOrDefault ( m => m . Name == methodName && m . GetParameters ( ) . Length == 2 ) ;
36- var genericMethod = method . MakeGenericMethod ( typeof ( T ) , propInfo . PropertyType ) ;
37-
38- data = ( IQueryable < T > ) genericMethod . Invoke ( null , new object [ ] { data , expr } ) ;
32+ data = data . ApplySort ( methodName , sort . Field ) ;
3933 }
4034
4135 return data ;
4236 }
4337
4438 public static IQueryable < T > GroupSort < T > ( this IQueryable < T > data , string dir )
4539 {
46- var propInfo = CommonExtension . GetPropertyInfo ( typeof ( T ) , "Key" ) ;
47- var expr = ExpressionExtension . BuildLambda ( typeof ( T ) , propInfo ) ;
4840 var methodName = dir == "asc" ? "OrderBy" : "OrderByDescending" ;
4941
42+ return data . ApplySort ( methodName , "Key" ) ;
43+ }
44+
45+ private static IQueryable < T > ApplySort < T > ( this IQueryable < T > data , string methodName , string field )
46+ {
47+ var propInfo = CommonExtension . GetPropertyInfo ( typeof ( T ) , field ) ;
48+ var expr = ExpressionExtension . BuildLambda ( typeof ( T ) , propInfo ) ;
5049
5150 var method = typeof ( Queryable ) . GetMethods ( ) . FirstOrDefault ( m => m . Name == methodName && m . GetParameters ( ) . Length == 2 ) ;
5251 var genericMethod = method . MakeGenericMethod ( typeof ( T ) , propInfo . PropertyType ) ;
0 commit comments