Índice de Pagagem de Ravendb
-
25-09-2019 - |
Pergunta
Eu tenho uma consulta LINQ como
var mdls = (from mdl in query dbSession.Query<MyModel>("MyIndex")
orderby mdl.Name
select dept).Skip(page.Value).Take(4);
Onde "MyIndex" é um índice simples definido no Ravendb. Eu sei que, ao consultar um índice no Ravendb, ele retorna "TotalResults". Ver aqui
Como posso obter o resultado da consulta que tem o TotalResult
propriedade?
Solução
Se você estiver executando um LuceneQuery, você recebe um documentário devolvido que possui uma propriedade de consultas que contém o TotalResults para que você possa acessá -lo da seguinte forma:
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;
Se você estiver executando uma consulta LINQ em vez disso, poderá ligar para a contagem () na consulta antes de limitá -la com 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);
Outras dicas
Você precisa fazer algo assim no final de sua consulta
.Customize(x => x.TotalResult)
A propriedade TotalResult está disponível apenas no LuceneQuery, não na consulta LINQ.
Parece que você pode obter QueryResult
Através dos session.LuceneQuery<YouModel>("YourIndex")
e não de session.Query<YourModel>("YourIndex")
. Mas, eu me pergunto por que alguém usaria session.Query<YourModel>("YourIndex")
?