Frage

Ich habe eine Linq-Abfrage als

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

Wo "MyIndex" ist ein einfacher Index in RavenDB definiert. Ich weiß, dass, während ein Index in RavenDB Abfrage es „TotalResults“ zurückgibt. Siehe hier

Wie kann ich das Abfrageergebnis erhalten, die die TotalResult Eigenschaft hat?

War es hilfreich?

Lösung

Wenn Sie eine LuceneQuery ausführen erhalten Sie eine DocumentQuery zurückgegeben, dass ein queryresult Eigenschaft hat, dass TotalResults enthält, so dass Sie darauf zugreifen können, wie folgt:

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;

Wenn Sie eine LINQ-Abfrage sind Ausführung statt, dann können Sie rufen Count () auf der Abfrage, bevor es mit Überspringen Begrenzung und Nehmen:

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);

Andere Tipps

Sie müssen so etwas wie dies am Ende der Abfrage

tun
.Customize(x => x.TotalResult)

Die TotalResult Eigenschaft ist nur auf der LuceneQuery, nicht die LINQ-Abfrage.

Es scheint, dass Sie QueryResult durch session.LuceneQuery<YouModel>("YourIndex") und nicht von session.Query<YourModel>("YourIndex") bekommen können. Aber ich frage mich, warum sollte man Gebrauch session.Query<YourModel>("YourIndex")?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top