2014-10-02 55 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}"));