Question

J'ai une requête Linq comme

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

Où "MyIndex" est un simple indice défini dans RavenDB. Je sais que si l'interrogation d'un index en RavenDB il retourne « totalResults ». Voir

Comment puis-je obtenir le résultat de la requête qui a la propriété TotalResult?

Était-ce utile?

La solution

Si vous exécutez un LuceneQuery vous obtenez un DocumentQuery retourné qui a une propriété QueryResult qui contient totalResults afin que vous puissiez accéder comme suit:

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 vous exécuter une requête LINQ plutôt, vous pouvez appeler Count () sur la requête avant de limiter avec Skip et 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);

Autres conseils

Vous devez faire quelque chose comme ça à la fin de votre requête

.Customize(x => x.TotalResult)

La propriété TotalResult est disponible uniquement sur le LuceneQuery, pas la requête LINQ.

Il semble que vous pouvez obtenir QueryResult par session.LuceneQuery<YouModel>("YourIndex") et non de session.Query<YourModel>("YourIndex"). Mais, je me demande pourquoi aurait-on utiliser session.Query<YourModel>("YourIndex")?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top