0

ravendb クエリは、count メソッドと tolist().count に対して異なる結果を返します。

クエリ 1 (9 を返す):

var count = session.Query<MobileForm,ByFormNameIndex>().Where(x => x.RequestType == RequestType.Db && x.BelongTo == oaname).ToList().Count;

クエリ 2 (44 を返す):

var count = session.Query<MobileForm,ByFormNameIndex>().Where(x => x.RequestType == RequestType.Db && x.BelongTo == oaname).Count();

インデックス定義:

public class ByFormNameIndex : AbstractIndexCreationTask<MobileForm>
{
     public ByFormNameIndex()
    {

    Map = mobileForms => from form in mobileForms
                         select new
                         {
                             form.FormName,
                             form.BelongTo,
                             form.RequestType,
                             form.CreateTime,
                             form.Uuid
                         };
    Analyzers.Add(x => x.FormName, "Lucene.Net.Analysis.PanGu.PanGuAnalyzer,PanGu.Lucene.Analyzer, Version=1.3.1.0, Culture=neutral, PublicKeyToken=null");
    Indexes.Add(x => x.FormName, FieldIndexing.Analyzed);
    Indexes.Add(x => x.BelongTo, FieldIndexing.NotAnalyzed);
    Indexes.Add(x => x.RequestType, FieldIndexing.NotAnalyzed);
    Indexes.Add(x => x.Uuid, FieldIndexing.NotAnalyzed);
}

}

query1 は正しいカウントを返しますが、これとメソッドの違いは何ですか?正しい結果を得るためにインデックスを再構築する方法は?

4

1 に答える 1

1

それは設計によるものです。 Count()合計数が表示されます。 ToList()最初のページのみを提供します。そして、あなたはそれを数えます。

于 2013-07-31T08:59:31.610 に答える