Индекс пейджинга Ravendb
-
25-09-2019 - |
Вопрос
У меня есть запрос LINQ как
var mdls = (from mdl in query dbSession.Query<MyModel>("MyIndex")
orderby mdl.Name
select dept).Skip(page.Value).Take(4);
Где «MyIndex» - это простой индекс, определенный в RavendB. Я знаю, что при запросе индекса в Ravendb он возвращает «тоталрез». Видеть здесь
Как я могу получить результат запроса, который имеет TotalResult
имущество?
Решение
Если вы выполняете LuconeQuery, вы получаете возврату документации, которая имеет свойство 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, вы можете назвать счет () в запросе, прежде чем ограничивать его с пропуском и взять:
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);
Другие советы
Вы должны сделать что-то вроде этого в конце вашего запроса
.Customize(x => x.TotalResult)
Свойство Totalresult доступно только на LucineQuery, а не запрос LINQ.
Похоже, вы можете получить QueryResult
через session.LuceneQuery<YouModel>("YourIndex")
и не из session.Query<YourModel>("YourIndex")
. Отказ Но я задаюсь вопросом, почему одно использовать session.Query<YourModel>("YourIndex")
?