如何使用Sitecore.ContentSearch通过其字段(类型为droptree)获取Sitecore 7.2中的sitecore项目?
我尝试过:context.GetQueryable<SearchResultItem>().FirstOrDefault(resultItem=>resultItem["Field Name"]=="{76036F5E-CBCE-46D1-AF0A-4143F9B557AA}");
但没有运气。有什么提示吗?
答案 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}"));