Domanda

Ho una domanda Linq come

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

Dove "MioIndice" è un indice semplice definito RavenDB. So che durante l'interrogazione di un indice in RavenDB restituisce "totalResults". Vedere qui

Come posso ottenere il risultato della query che ha la proprietà TotalResult?

È stato utile?

Soluzione

Se si sta eseguendo un LuceneQuery si ottiene un DocumentQuery tornato con una proprietà che contiene QueryResult totalResults in modo da potervi accedere come segue:

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 si sta eseguendo una query LINQ, invece, allora si può chiamare Conte () sulla query prima di limitare con Skip e 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);

Altri suggerimenti

Hai bisogno di fare qualcosa di simile a questo alla fine della query

.Customize(x => x.TotalResult)

La proprietà TotalResult è disponibile solo sul LuceneQuery, non il LINQ Query.

Sembra che si può ottenere attraverso QueryResult session.LuceneQuery<YouModel>("YourIndex") e non da session.Query<YourModel>("YourIndex"). Ma, mi chiedo, perché uno uso session.Query<YourModel>("YourIndex")?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top