如何从Sitecore 7 LINQ ContentSearch API检索总结果计数?

如何从Sitecore 7 LINQ ContentSearch API检索总结果计数?,sitecore,sitecore7,Sitecore,Sitecore7,在Lucene.Net中,可以使用TopDocs.TotalHits属性检索匹配文档的总数 此功能在QueryRunner类中使用out参数 使用Sitecore 7新的LINQ API检索总结果计数的推荐方法是什么?如果不枚举整个结果集,似乎是不可能的。以下是我到目前为止的情况: var index = ContentSearchManager.GetIndex("sitecore_web_index"); using (var context = index.CreateSearchCont

在Lucene.Net中,可以使用
TopDocs.TotalHits
属性检索匹配文档的总数

此功能在QueryRunner类中使用
out
参数

使用Sitecore 7新的LINQ API检索总结果计数的推荐方法是什么?如果不枚举整个结果集,似乎是不可能的。以下是我到目前为止的情况:

var index = ContentSearchManager.GetIndex("sitecore_web_index");
using (var context = index.CreateSearchContext())
{
    var query = context.GetQueryable<SearchResultItem>()
                       .Where(item => item.Content == "banana");

    var totalResults = query.Count(); // Enumeration
    var topTenResults = query.Take(10); // Enumeration again? this can't be right?

    ...
}
var index=ContentSearchManager.GetIndex(“sitecore\u web\u index”);
使用(var context=index.CreateSearchContext())
{
var query=context.GetQueryable()
.Where(item=>item.Content==“香蕉”);
var totalResults=query.Count();//枚举
var topTenResults=query.Take(10);//再次枚举?这不可能是正确的吗?
...
}
试试这个:

using Sitecore.ContentSearch.Linq; // GetResults on IQueryable

var index = ContentSearchManager.GetIndex("sitecore_web_index");
using (var context = index.CreateSearchContext())
{
    var query = context.GetQueryable<SearchResultItem>()
                   .Where(item => item.Content == "banana");
    var results = query.GetResults();


    var totalResults = results.TotalSearchResults;
    var topTenResults = results.Hits.Take(10);

...
}
使用Sitecore.ContentSearch.Linq;//在IQueryable上获取结果
var index=ContentSearchManager.GetIndex(“sitecore\u web\u索引”);
使用(var context=index.CreateSearchContext())
{
var query=context.GetQueryable()
.Where(item=>item.Content==“香蕉”);
var results=query.GetResults();
var totalResults=results.TotalSearchResults;
var topTenResults=results.Hits.Take(10);
...
}

要获得有关sitecore和linq的更多信息,您可以查看

Sitecore开发团队的这篇博文也讨论了这个主题-