RavenDB分页索引

时间:2010-08-31 14:48:45

标签: linq pagination ravendb

我有一个Linq查询

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

其中“MyIndex”是RavenDB中定义的简单索引。我知道在RavenDB中查询索引时会返回“TotalResults”。见here

如何获取具有TotalResult属性的查询结果?

3 个答案:

答案 0 :(得分:6)

如果您正在执行LuceneQuery,则会返回一个DocumentQuery,它具有包含TotalResults的QueryResult属性,因此您可以按如下方式访问它:

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;

如果您正在执行LINQ查询,那么您可以在查询之前调用Count(),然后使用Skip和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);

答案 1 :(得分:0)

您需要在查询结束时执行此类操作

.Customize(x => x.TotalResult)

TotalResult属性仅适用于LuceneQuery,而不适用于LINQ查询。

答案 2 :(得分:0)

您似乎可以通过QueryResult而不是session.LuceneQuery<YouModel>("YourIndex")获得session.Query<YourModel>("YourIndex")。但是,我想知道为什么会使用session.Query<YourModel>("YourIndex")