我正在尝试使用以下查询查询一个项目的后代:
尽管存在具有指定字段值的项目,但是没有获取任何项目?
查询分析器中的此查询由于某种原因起作用:
select * from /sitecore/content/itema/News/descendant::*[@NewsId='235271']
有任何帮助我纠正我的代码以获取我正在搜索的项目吗?
string sitecoreQuery = "descendant::*[@NewsId='" + item.Id.ToString() + "']";
Item[] newsItems = parent.Axes.SelectItems(sitecoreQuery);
答案 0 :(得分:0)
根据您的评论更新:
查询看起来没问题,但您也可以尝试使用后代的快捷方式://*
。我刚刚在本地进行了测试,它返回了我预期的项目。
string sitecoreQuery = "//*[@NewsId='" + item.Id.ToString() + "']";
Item[] newsItems = parent.Axes.SelectItems(sitecoreQuery);
同时仔细检查item.Id.ToString()
是否正在返回您期望的ID。
希望有所帮助
答案 1 :(得分:0)
您可以尝试以下操作:
Item[] newsItems = Sitecore.Context.Database.SelectItems(string.Format("/sitecore/content/itema/News//*[@NewsId='{0}']", NewsId));
那可以为你提供过滤后的物品