我正在使用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列表中的第一个条件,并忽略所有其他条件。
答案 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);