Sitecore.ContentSearch按字段值搜索

时间:2014-10-02 05:08:37

标签: sitecore lucene.net sitecore7 sitecore7.2

如何使用Sitecore.ContentSearch通过其字段(类型为droptree)获取Sitecore 7.2中的sitecore项目?

我尝试过:context.GetQueryable<SearchResultItem>().FirstOrDefault(resultItem=>resultItem["Field Name"]=="{76036F5E-CBCE-46D1-AF0A-4143F9B557AA}");但没有运气。有什么提示吗?

2 个答案:

答案 0 :(得分:7)

Guids以标准化格式(小写,没有连字符或大括号)编入索引。因此,如果您想以这种方式进行搜索,我认为您需要规范化搜索字词。

请参阅此博文的“略微复杂的查询”部分: http://www.xcentium.com/blog/2013/11/05/sitecore-7-linq-to-sitecore-simplified-part-1

顺便说一句,如果使用映射的POCO而不是SearchResultItem进行查询,则可以避免必须手动执行该规范化。

答案 1 :(得分:1)

尝试以下方法:

context.GetQueryable<SearchResultItem>().FirstOrDefault(resultItem=>resultItem["Field Name"]== Sitecore.ContentSearch.Utilities.IdHelper.NormalizeGuid("{76036F5E-CBCE-46D1-AF0A-4143F9B557AA}");

或者就像马丁建议的那样,你可以创建自己的POCO类,它具有你的字段属性类型(Sitecore.Data.ID):

public class MyOwnPoco : SearchResultItem
{
    public Sitecore.Data.ID MyField {get;set;}

}

context.GetQueryable<>().FirstOrDefault(i=> i.MyField == Sitecore.Data.ID.Parse("{76036F5E-CBCE-46D1-AF0A-4143F9B557AA}"));