0

我有一个与标准 Sitecore 意义上的“文档”不对应的项目结构。它对应于数据项。

我的项目具有的关系之一如下:

Person -> State -> Country

一个人有一个到一个州的链接字段,而一个州有一个到一个国家的链接字段。

我的问题是:如何编写查询来检索所有最终链接到某个缩写国家的人?

我对如何在 Sitecore Query 中执行此操作感到困惑。我目前的解决方案是使用 LINQ 和几个查询。

4

1 回答 1

1

假设这些项目之间的链接是使用参考字段创建的,例如 Droplink、Treelist、Droptree 等,您可以使用 Sitecore Links 数据库遍历参考/引荐来源。

这是一个以国家/地区项目开头并获取任何引用状态的示例(未经测试)。对状态执行相同的查询以获取任何推荐人。结果将添加到通用List<Item>集合中。

List<Item> peopleList = new List<Item>();

var countryReferences = Globals.LinkDatabase.GetReferences(countryItem);
var referringStates = countryReferences.Select(c => c.GetTargetItem()).Where(c => c.Template.Key == "state");
foreach (var state in referringStates)
{
    var stateReferences = Globals.LinkDatabase.GetReferences(state);
    var referringPeople = stateReferences.Select(s => s.GetTargetItem()).Where(s => s.Template.Key == "person");
    foreach (var person in referringPeople)
    {
        peopleList.Add(person);
    }
}
于 2013-04-15T22:36:41.193 回答