Étendre la méthode OrderBy d'IQueryable avec des noms de colonnes génériques
Cet article explique comment améliorer IQueryable avec une méthode d'extension générique afin qu'il puisse être trié en fonction d'un nom de colonne de chaîne donné.
Considérez les méthodes d'extension suivantes :
1 2 |
|
Afin d'implémenter la fonction de tri, nous devons créer une expression utilisant le nom de colonne donné. Cependant, nous avons rencontré un problème : le type de classement déduit de l'expression ne correspondait pas au type requis par la méthode OrderBy.
Cela présente un défi puisque le type de tri TSortColumn
ne peut être déterminé qu'au moment de l'exécution. Il existe cependant une solution.
L'exemple de code fourni démontre une approche similaire :
1 |
|
Cette méthode accepte un paramètre de chaîne ordering
, qui représente le nom de la colonne. Il génère dynamiquement une expression basée sur le nom de colonne spécifié et l'expression Lambda. L'expression résultante est ensuite utilisée pour créer un MethodCallExpression
qui appelle la méthode OrderBy.
Enfin, source.Provider.CreateQuery<T>
est appelé pour renvoyer le IQueryable trié.
Modification : Pour un tri décroissant :
1 |
|
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!