2010-08-10 7 views
2

Je construis une application MVC 2 avec SubSonic 3 - J'ai essayé beaucoup de méthodes de pagination différentes et je ne trouve rien qui me semble juste.Pagination avec SubSonic

J'ai une requête de base qui serait passée à une vue qui serait en boucle et chaque itération appellerait une vue partielle fortement typée.

 var SOQuestion= (
      from q in repo.All<SOQuestion>() 
      orderby p.DateUpdated descending 
      select p 
      ).Skip(5).Take(10); 

Je veux être en mesure d'ajouter des filtres, le cas échéant, par exemple tag = "mvc" et/ou user = "me" et à la même page de temps les résultats sensiblement.

Quelle est la solution simple et soignée?

Répondre

3

Vous utiliseriez une déclaration where, comme décrit Lazare.

Si vous avez besoin de le faire dynamiquement (c'est-à-dire que vous ne savez pas quels champs vous allez filtrer à l'avance), jetez un oeil à la bibliothèque Dynamic Linq.

+0

Bon point sur la bibliothèque Dynamic Linq, il y a une bonne introduction sur le blog de Scott Hanselman: http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using- the-linq-dynamic-query-library.aspx – Lazarus

+0

Merci pour cela et d'accord linq dynamique est le chemin à parcourir. En termes de présentation de la pagination, y compris l'obtention de comptages et le calcul de la prochaine, dernière etc - est-il une bonne façon de présenter cela? – Gavin

+0

Il y a quelques bonnes idées que vous devriez pouvoir utiliser ici: http://www.c-sharpcorner.com/uploadfile/scottlysle/pagesortmvcincsharp03192009083337am/pagesortmvcincsharp.aspx –

3

Vous pouvez le faire comme suit:

var SOQuestion= (
     from q in repo.All<SOQuestion>() 
     where tag =="mvc" && user == "me" 
     orderby p.DateUpdated descending 
     select p 
     ).Skip(5).Take(10);