【问题标题】:Sitecore.ContentSearch Search by Field ValueSitecore.ContentSearch 按字段值搜索
【发布时间】:2014-10-02 05:08:37
【问题描述】:

如何使用 Sitecore.ContentSearch 通过字段(droptree 类型)值在 Sitecore 7.2 中获取站点核心项目?

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

【问题讨论】:

    标签: sitecore lucene.net sitecore7 sitecore7.2


    【解决方案1】:

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

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

    顺便说一句,如果您使用映射的 POCO 而不是 SearchResultItem 进行查询,那么您可以避免手动进行标准化。

    【讨论】:

    • 提供的链接不再可用。
    • 更新了我的答案以包含新的 URL
    【解决方案2】:

    尝试以下方法:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-23
      • 1970-01-01
      • 2018-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多