繁体   English   中英

通过Ektron中的Custom Property获取分类法

[英]Fetching taxonomy by Custom Property in Ektron

我正在使用Ektron 9.0。

我有两个与Ektron中的分类法相关的不同自定义属性。

假设分类法称为“ P”,它具有两个自定义属性,

* P1 * P2

这些自定义属性中的每一个都有其自己的值。

(例如:* P1-V1 * P2 -V2)

现在,我试图根据这些自定义属性的名称和值来提取Ektron中的所有分类法。

即,获得Ektron中的所有分类法,其自定义属性名称为P1,对应的值为V1,另一个自定义属性名称为P2,对应的值为V2。

代码:

CriteriaFilterGroup<TaxonomyCustomProperty> criteriaFilterGrp1= new CriteriaFilterGroup<TaxonomyCustomProperty>();
criteriaFilterGrp1.AddFilter(TaxonomyCustomProperty.Name,
CriteriaFilterOperator.EqualTo,"P1");
criteriaFilterGrp1.AddFilter(TaxonomyCustomProperty.Value,
                  CriteriaFilterOperator.EqualTo, "V1");
criteriaFilterGrp1.Condition = LogicalOperation.And;
custCtriteria.FilterGroups.Add(criteriaFilterGrp1);

CriteriaFilterGroup<TaxonomyCustomProperty> criteriaFilterGrp2= new CriteriaFilterGroup<TaxonomyCustomProperty>();
criteriaFilterGrp2.AddFilter(TaxonomyCustomProperty.Name,
              CriteriaFilterOperator.EqualTo, "P2";
criteriaFilterGrp2.AddFilter(TaxonomyCustomProperty.Value,
              CriteriaFilterOperator.EqualTo, "V2");
custCtriteria.FilterGroups.Add(criteriaFilterGrp2);

在这里,当我按如下所示按两个分类法名称及其对应值添加“筛选条件”时,没有得到任何结果,因为它正在寻找一个满足我给出的所有四个条件的分类法自定义属性。

我该如何解决?

我的猜测是,底层代码的行为方式与预期的方式不同-它不是在处理具有自定义属性的分类项目,而是在处理属性本身。 就其类型而言,这与其他ektron API的行为是一致的,但不一致的是它返回了相关的分类项目本身(尽管这显然是更理想的结果)。 对于这种设计,有意义的是您无法检索名称等于p1 p2的自定义属性。

解决方案是为要筛选的每个属性分别检索列表,然后将这些列表相交。 ektron方便地返回iQueryable列表,因此您可以使用linq轻松完成此操作:

CriteriaFilterGroup<TaxonomyCustomProperty> criteriaFilterGrp1= new CriteriaFilterGroup<TaxonomyCustomProperty>();
criteriaFilterGrp1.AddFilter(TaxonomyCustomProperty.Name,
CriteriaFilterOperator.EqualTo,"P1");
criteriaFilterGrp1.AddFilter(TaxonomyCustomProperty.Value,
                  CriteriaFilterOperator.EqualTo, "V1");
criteriaFilterGrp1.Condition = LogicalOperation.And;
custCtriteria.FilterGroups.Add(criteriaFilterGrp1);
var itemsWithProp1= taxManager.getList(custCtriteria);

custCtriteria = new criteria();
CriteriaFilterGroup<TaxonomyCustomProperty> criteriaFilterGrp2= new CriteriaFilterGroup<TaxonomyCustomProperty>();
criteriaFilterGrp2.AddFilter(TaxonomyCustomProperty.Name,
              CriteriaFilterOperator.EqualTo, "P2";
criteriaFilterGrp2.AddFilter(TaxonomyCustomProperty.Value,
              CriteriaFilterOperator.EqualTo, "V2");
custCtriteria.FilterGroups.Add(criteriaFilterGrp2);
var itemsWithProp2 = taxManager.getList(custCtriteria);

var itemsWithBoth = itemsWithProp1.Intersect(itemsWithProp2);

虽然这不是最优雅或最有效的解决方案,但我不确定在制作自定义SQL查询之外,Ektron的API中是否有更好的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM