Sitecore搜索多个单词

Sitecore搜索多个单词,sitecore,sitecore7,Sitecore,Sitecore7,如何使用Sitecore 7搜索多个单词? 我尝试了每个单词都使用Contains,但效果不好,我认为性能不是很好。您可以使用PredicateBuilder解决此问题: 代码将类似于: Queryable<SearchItem> SearchText(List<string> keywords, IQueryable<SearchItem> itemList) { var predicate = PredicateBuilder.T

如何使用Sitecore 7搜索多个单词?
我尝试了每个单词都使用Contains,但效果不好,我认为性能不是很好。

您可以使用PredicateBuilder解决此问题:

代码将类似于:

 Queryable<SearchItem> SearchText(List<string> keywords, IQueryable<SearchItem> itemList)
    {
        var predicate = PredicateBuilder.True<SearchItem>();

        foreach (string keyword in keywords)
        {
            predicate = predicate.And(i => i.FieldOne.Contains(keyword) || i.FieldTwo.Contains(keyword) || i.FieldThree.Contains(keyword) || i.Fieldyyy.Contains(keyword));
        }
        return itemList.Where(predicate);
    }
Queryable SearchText(列表关键字,IQueryable itemList)
{
var predicate=PredicateBuilder.True();
foreach(关键字中的字符串关键字)
{
谓词=谓词。和(i=>i.FieldOne.Contains(关键字)| | i.FieldTwo.Contains(关键字)| | i.FieldThree.Contains(关键字)| | i.fieldyyyy.Contains(关键字));
}
返回itemList.Where(谓词);
}
关于predicateBuilder,您可以在此处找到:
如果使用ToList(),性能会更好;仅当您已从IQueryable中筛选出所需的所有项(使用LINQ语句)时,才在IQueryable上。当您调用.ToList()时;查询将被执行。

这正是我需要的。谢谢