2010-08-10 4 views
2

Я создаю приложение MVC 2 с SubSonic 3 - я пробовал много разных методов поискового вызова и не могу найти ничего, что кажется правильным.Пейджинг с SubSonic

У меня есть базовый запрос, который будет передан в представление, которое будет циклически, и каждая итерация вызовет строго типизированное частичное представление.

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

Я хочу, чтобы иметь возможность добавлять фильтры в случае необходимости, например, tag = "mvc" и/или user = "me" и в то же время страницы результаты толково.

Какое решение прост и опрятен?

ответ

3

Вы бы использовать where заявление, так как описывает Lazarus.

Если вам нужно сделать это динамически (т. Е. Вы не знаете, какие поля вы будете фильтровать заранее), посмотрите библиотеку Dynamic Linq.

+0

Хорошая точка в библиотеке Dynamic Linq, есть хороший учебник по блогу Scott Hanselman: http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using- the-linq-dynamic-query-library.aspx – Lazarus

+0

благодарит за это и согласен, что динамический linq - это путь. С точки зрения представления пейджинга, включая подсчет и подсчет следующего, последнего и т. Д. - есть ли опрятный способ представить это? – Gavin

+0

Есть несколько хороших идей, которые вы должны использовать здесь: http://www.c-sharpcorner.com/uploadfile/scottlysle/pagesortmvcincsharp03192009083337am/pagesortmvcincsharp.aspx –

3

Вы можете сделать это следующим образом:

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