ページングラッパーを作成する拡張メソッドにこのロジックがあります。
int total = 0;
if (query is IRavenQueryable<T>)
{
RavenQueryStatistics stats;
var rQuery = (IRavenQueryable<T>)query;
rQuery.Statistics(out stats);
total = stats.TotalResults;
}
else
{
total = query.Count();
}
私の問題は、raven クエリを実行すると、デバッグ中にrQueryにカーソルを合わせて結果を展開しようとしない限り、 stats.TotalResultsがゼロになることです。
ここで何が間違っていますか?レイヴンに必要な結果を一貫して与えるにはどうすればよいですか?
メソッド全体は次のとおりです。
public static PagingModel<T> Page<T>(this IEnumerable<T> query, int page, int count)
{
if (page < 1)
throw new ArgumentOutOfRangeException("Page is one-based and must be greater than zero");
int total = 0;
if (query is IRavenQueryable<T>)
{
RavenQueryStatistics stats;
var rQuery = (IRavenQueryable<T>)query;
rQuery.Statistics(out stats);
total = stats.TotalResults;
}
else
{
total = query.Count();
}
var results = query
.Skip((page - 1) * count)
.Take(count)
.ToArray();
return new PagingModel<T>()
{
Page = page,
Rows = results,
Total = total /count
};
}