Considérations autour de la pagination en
LINQ
Il arrive que le résultat d’une requête
LINQ constitue un grand volume de données. Il s’agit alors d’obtenir le
résultat grâce à un système
de pagination, un peu comme ce qui se pratique dans une API REST.
Pour cela, on utilise les opérateurs
LINQ Skip et Take dont
voici les prototypes :
public static IEnumerable<TSource> Skip<TSource>(
this IEnumerable<TSource> source,
int count
)
public static IEnumerable<TSource> Take<TSource>(
this IEnumerable<TSource> source,
int count
)
Idéalement, on commence à définir
un nombre de résultats par page :
int nombreObjetsParPage = 50;
Puis on récupère le résultat
page par page, par exemple ici, la page 42 :
var résultatPage42 = résultat
.Skip( nombreObjetsParPage * 42)
.Take(nombreObjetsParPage);
À l’index 42 (compte tenu de la pagination),
on récupère ici 50 éléments
de résultats.