Индекс пейджинга RavenDB - PullRequest
       5

Индекс пейджинга RavenDB

4 голосов
/ 31 августа 2010

У меня есть запрос Linq как

var mdls = (from mdl in query dbSession.Query<MyModel>("MyIndex")
              orderby mdl.Name
              select dept).Skip(page.Value).Take(4);

Где "MyIndex" - это простой индекс, определенный в RavenDB. Я знаю, что при запросе индекса в RavenDB он возвращает «TotalResults». Смотри здесь

Как получить результат запроса со свойством TotalResult?

Ответы [ 3 ]

6 голосов
/ 01 сентября 2010

Если вы выполняете LuceneQuery, вы получаете возвращенный DocumentQuery со свойством QueryResult, которое содержит TotalResults, поэтому вы можете получить к нему доступ следующим образом:

var documentQuery = (from mdl in query dbSession.LuceneQuery<MyModel>("MyIndex")
                     orderby mdl.Name
                     select dept).Skip(page.Value).Take(4);

var totalResults = documentQuery.QueryResult.TotalResults;

Если вместо этого вы выполняете запрос LINQ, вы можете вызвать Count () для запроса, прежде чем ограничить его с помощью Skip and Take:

var linqQuery = (from mdl in query dbSession.Query<MyModel>("MyIndex")
                      orderby mdl.Name
                      select dept);

var totalResults = linqQuery.Count();

var pageOfResults = linqQuery.Skip(page.Value).Take(4);
0 голосов
/ 02 сентября 2010

Кажется, что вы можете получить QueryResult через session.LuceneQuery<YouModel>("YourIndex"), а не из session.Query<YourModel>("YourIndex"). Но мне интересно, зачем использовать session.Query<YourModel>("YourIndex")?

0 голосов
/ 31 августа 2010

Вам нужно сделать что-то подобное в конце вашего запроса

.Customize(x => x.TotalResult)

Свойство TotalResult доступно только для LuceneQuery, но не для запроса LINQ.

...