Tridion查询:基于关键字列表筛选/排除组件
我正在使用Tridion.ContentDelivery.DynamicContent.Query。 我试图通过分类关键字my code筛选组件并排除其中一些组件:Tridion查询:基于关键字列表筛选/排除组件,tridion,tridion-2011,tridion-content-delivery,Tridion,Tridion 2011,Tridion Content Delivery,我正在使用Tridion.ContentDelivery.DynamicContent.Query。 我试图通过分类关键字my code筛选组件并排除其中一些组件: List<Criteria> excludeCriteria = new List<Criteria>(); foreach (string keywordUri in excludeKeywords) { excludeCriteria.Add(new TaxonomyKeywordCriteria
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);
List excludeCriteria=new List();
foreach(excludeKeywords中的字符串关键字URI)
{
Add(新的分类标准keywordcriteria(categoryUri,keywordUri,false));
}
Criteria Criteria=新的Notinctriria(新的AndCriteria(excludeCriteria.ToArray());
查询=新查询(条件);
问题是,在结果中,我有一个只按其中一个分类标准过滤的列表。将应用excludeKeywords列表中的第一个条件,而忽略所有其他条件。我不完全确定,但我有一种感觉,当您添加这样的条件时,您会以某种方式得到一个OR列表(您可以查看代理的调试日志,其中应该执行查询) 你能用另一种方式试试吗,把你的分类法关键字标准包装在一个NotInCriteria中,然后把它们添加到and标准中?比如说:
List excludeCriteria=new List();
foreach(excludeKeywords中的字符串关键字URI)
{
添加(新的NotInCriteria(新的分类标准keywordcriteria(categoryUri,keywordUri,false));
}
Criteria=新的AndCriteria(排除Criteria.ToArray());
查询=新查询(条件);
Hi@Vitaliy。您能否打开跟踪日志记录、重新启动webApp、加载页面并检查为BrokerQuery创建的JPQL查询?您应该能够看到这样的条目:“TRACE-JPAQueryDAO-Broker-Query-generated:”。请复制/粘贴它以查看更多正在发生的事情。在这种情况下,仅应用excludeKeywords列表中的最后一个条件。然后确实按照@sea_gull的建议进行跟踪,并提供更多信息以供我们使用