Tridion查询:根据关键字列表过滤/排除组件

时间:2012-12-27 13:12:55

标签: tridion tridion-2011 tridion-content-delivery

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

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

问题是,结果我有一个仅由TaxonomyKeywordCriteria之一过滤的列表。将应用excludeKeywords列表中的第一个条件,并忽略所有其他条件。

1 个答案:

答案 0 :(得分:2)

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

你可以反过来尝试一下,将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);