2014-10-02 91 views
2

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

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

回答

7

Guids以标准化格式(小写,无连字符或大括号)索引。所以如果你想以这种方式搜索,我认为你需要规范你的搜索词。

见“稍微复杂的查询”这篇博客文章的部分: http://www.xcentium.com/blog/2013/11/05/sitecore-7-linq-to-sitecore-simplified-part-1

顺便说一句,如果你使用映射POCO的,而不是SearchResultItem那么你就可以避免这样做手工正常化做您的查询。

+0

提供的链接不再可用。 – wensveen 2015-05-11 10:01:52

+0

更新了我的答案以包含新的网址 – 2015-05-11 14:56:51

1

尝试以下操作:

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

或者就像马丁建议,您可以创建里面有你的领域与类型(Sitecore.Data.ID)属性自己的POCO类:

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}"));