如何使用Sitecore 7搜索多个单词? 我尝试使用Contains的每个单词,但是效果不好,我觉得性能不是很好。
答案 0 :(得分:3)
您可以针对此问题使用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);
}
关于predicateBuilder,你可以在这里找到: Dynamic query using predicate builder
答案 1 :(得分:0)
如果使用ToList(),性能会变得更好;只有当您从IQueryable中筛选出所有需要的项目(使用LINQ语句)时,才能在IQueryable上使用。当你调用.ToList();查询将被执行。