小编shi*_*vam的帖子

Sitecore内容搜索,转换为列表<item>和编辑

我正在使用Sitecore 7进行ContentSearchAPI的第一次潜水,但是遇到了一些麻烦.对于一个假设的问题,我决定编写一个搜索,为我的网站索引整个树,提取属于两个模板之一的项目并驻留在特定路径中.查询的代码是:

using (var context = index.CreateSearchContext())
{
    var results = context.GetQueryable<SearchResultItem>()
                 .Where(item => item.TemplateId == GlobalId.UniversalContent
                 || item.TemplateId == GlobalId.UniversalHome)
                 .Where(item => item.Path.Contains("/sitecore/content"))
                 .GetResults();
}
Run Code Online (Sandbox Code Playgroud)

到目前为止一切顺利; 搜索抓取所需的项目.但现在我想在编辑模式下打开项目并更改所述项目上字段的值.以前,当我使用Sitecore查询时,我使用以下内容来完成此任务:

foreach (Item i in itemList)
{
    using (new SecurityDisabler())
    {
        i.Editing.BeginEdit();
        i.Fields["DoNotIndex"].SetValue("1", true);
        i.Editing.EndEdit();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是LINQ查询的返回类型是SearchResultItem,因此它不继承Item方法,包括Editing.BeginEdit()等.我使用LINQ查询并使用Cast()或OfType()与ToList()结合使用,但不断收到错误,指出我无法将SearchResultItem转换为Item.

阅读Sitecore POCO似乎让我朝着正确的方向前进,但这似乎更多地是关于定义要阅读的领域.有没有办法将SearchResultItem转换为Item并打开项目进行编辑?使用LINQ和ContentSearch API,我是否需要创建POCO,定义我想要的字段然后使用POCO修改它?

c# linq sitecore

1
推荐指数
1
解决办法
1272
查看次数

标签 统计

c# ×1

linq ×1

sitecore ×1