2010-08-31 74 views
4

我有一个LINQ查询作为RavenDB寻呼指数

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属性的查询结果?

回答

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查询,而不是那么你就可以呼叫计()的查询与跳跃限制之前和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); 
+0

如果我'LuceneQuery '得到'QueryResult',但不是在上述情况。 – 2010-09-01 09:36:17

+0

@ajay更新我的答案的好点 – 2010-09-20 10:28:45

0

您需要在您的查询

.Customize(x => x.TotalResult) 

的TotalResult财产年底做这样的事情只能在LuceneQuery,而不是LINQ查询。

+0

我没有找到'x.TotalResult'属性。你能告诉我完整的LINQ声明吗? – 2010-08-31 18:32:25

+0

对不起,我错过了一些,查看文档的完整语法,http://ravendb.net/faq/total-results-in-paged-data-set – 2010-08-31 22:56:00

+0

那里它谈到'session.LuceneQuery '但这里我正在使用'session.Query ' – 2010-09-01 09:39:19

0

看来,你可以通过QueryResultsession.LuceneQuery<YouModel>("YourIndex")不是从session.Query<YourModel>("YourIndex")。但是,我想知道为什么会使用session.Query<YourModel>("YourIndex")