/// <summary> Converts all pivots (primary and secondary) in node to criterias </summary> /// <param name="queryNode"></param> /// <returns></returns> public static QueryNode ConvertPivotToCriterias(this QueryNode queryNode) { var pivotValues = queryNode?.PivotData.GetPivotValues(); if (pivotValues == null) { return(queryNode); } var secondaryOnly = !queryNode.PivotData.PivotDefinition.StorageFeatures.HasFlag(PivotStorageFeatures.FilterByMainPivotValue); if (secondaryOnly) { pivotValues = pivotValues.Skip(1).ToDictionary(x => x.Key, x => x.Value); } var additionCriteriaGroup = queryNode.AddCriteriaGroup(CriteriaAppendType.And); // Add additional filter foreach (var additionalValue in pivotValues) { var subjectQuery = SingleQuery.CreateQuery.AddProperty(additionalValue.Key); var comparator = additionalValue.Value is IEnumerable <string> ?CriteriaComparator.In : CriteriaComparator.Eq; additionCriteriaGroup.AddCriteria(subjectQuery, comparator, additionalValue.Value); } return(queryNode); }