如何使用 Sitecore 7 搜索多个单词?我尝试对每个单词使用 Contains,但效果不佳,而且我认为性能不是很好。
user2565889
问问题
750 次
2 回答
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
于 2013-08-01T04:26:03.840 回答
0
如果使用 ToList(); 性能会更好 仅当您从 IQueryable 中过滤掉所需的所有项目(使用 LINQ 语句)时,才在 IQueryable 上。当你调用 .ToList(); 查询将被执行。
于 2013-08-01T11:30:45.687 回答