Pregunta

Tengo una consulta de Linq como

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

Donde "MyIndex" es un índice simple definido en RavenDB.Sé que al consultar un índice en RavenDB devuelve "TotalResults".Ver aquí

¿Cómo puedo obtener el resultado de la consulta que tiene el TotalResult ¿propiedad?

¿Fue útil?

Solución

Si se está ejecutando un LuceneQuery se obtiene una DocumentQuery devuelto que tiene una propiedad que contiene QueryResult totalResults para que pueda acceder a ella de la siguiente manera:

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;

Si está ejecutando una consulta de LINQ entonces puede llamar Count () en la consulta antes de limitar con Skip y 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);

Otros consejos

Debes hacer algo como esto al final de tu consulta.

.Customize(x => x.TotalResult)

La propiedad TotalResult solo está disponible en LuceneQuery, no en LINQ Query.

Parece que se puede obtener a través QueryResult session.LuceneQuery<YouModel>("YourIndex") y no de session.Query<YourModel>("YourIndex"). Pero, me pregunto por qué lo haría un uso session.Query<YourModel>("YourIndex")?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top