J'ai implémenté une routine de pagination en utilisant skip and take. Cela fonctionne très bien, mais j'ai besoin du nombre total d'enregistrements dans la table avant d'appeler Take and Skip.LINQ: Technique de pagination, utilisation de la prise et du saut, mais nécessite également des enregistrements complets - comment l'implémenter?
Je sais que je peux soumettre 2 requêtes séparées.
- Get Count
- Sauter et Take
Mais je préférerais ne pas émettre 2 appels à LINQ.
Comment puis-je le renvoyer dans la même requête (par exemple en utilisant une instruction select imbriquée)?
Auparavant, j'ai utilisé une technique de pagination dans une procédure stockée. J'ai renvoyé les articles en utilisant une table temporaire, et j'ai passé le compte à un paramètre de sortie.
Il s'agit toujours de deux requêtes sur la base de données. Il ressemble seulement à une requête si vous plissez assez fort à la requête LINQ. ;-) – Enigmativity
En fait, ce code n'entraîne en fait aucune requête de base de données. Seulement si vous itérez sur 'pagedQuery', la base de données sera appelée. Cela dépend également du fournisseur LINQ, mais un bon fournisseur l'exécutera comme une seule requête databsae. Certains fournisseurs peuvent exécuter des requêtes N + 1. En outre, l'exécution de deux requêtes distinctes (un nombre et une requête de résultats) aura probablement de meilleures performances que cette chose. Comme je l'ai dit, ce n'est pas joli. – Steven
remercie Steven! bien peut-être que ce n'est pas joli mais je l'aime bien :-) .. Pensez-vous que linq2sql exécuterait 1 requête ou utiliserait 2? Ou pensez-vous que ce serait un vrai problème de performance de faire juste 2 requêtes? c'est-à-dire obtenir mon compte et stocker en variable et puis nouvelle requête pour faire ma prise et sauter – Martin