2010-08-31 72 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")