1

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

4

2 回答 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 回答