3

我正在使用 Tridion.ContentDelivery.DynamicContent.Query。我正在尝试过滤组件并通过分类关键字排除其中一些组件,我的代码:

List<Criteria> excludeCriteria = new List<Criteria>();
foreach (string keywordUri in excludeKeywords)
{
    excludeCriteria.Add(new TaxonomyKeywordCriteria(categoryUri, keywordUri, false));                                
}
Criteria criteria = new NotInCriteria(new AndCriteria(excludeCriteria.ToArray())));
Query query = new Query(criteria);

问题是,结果我有一个仅按分类关键字标准之一过滤的列表。应用 excludeKeywords 列表中的第一个条件,而忽略所有其他条件。

4

1 回答 1

2

我不完全确定,但我有一种感觉,当你像这样添加标准时,你会以某种方式得到一个 OR 列表(你可以检查代理的调试日志,应该在那里执行查询)。

您可以换一种方式尝试,将您的 TaxonomyKeywordCriteria 包装在 NotInCriteria 中并将其添加到 AndCriteria 中吗?所以是这样的:

List<Criteria> excludeCriteria = new List<Criteria>();
foreach (string keywordUri in excludeKeywords)
{
    excludeCriteria.Add(new NotInCriteria(new TaxonomyKeywordCriteria(categoryUri, keywordUri, false)));                                
}
Criteria criteria = new AndCriteria(excludeCriteria.ToArray()));
Query query = new Query(criteria);
于 2012-12-31T09:06:29.837 回答