/// <summary> /// Initializes a new instance of the DynamicAggregateFilter class /// </summary> /// <param name="type">the query-type of this AggregateFilter</param> public DynamicCompositeFilter(DynamicCompositeFilterType type) { this.type = type; }
private DynamicTableFilter BuildFilters(ICollection <IFilterDescriptor> filters, DynamicCompositeFilterType compositeType) { var retVal = new DynamicCompositeFilter(compositeType); foreach (var filter in filters) { if (filter is CompositeFilterDescriptor cp) { retVal.AddFilter(BuildFilters(cp.FilterDescriptors, cp.LogicalOperator == FilterCompositionLogicalOperator.And?DynamicCompositeFilterType.And:DynamicCompositeFilterType.Or)); } else if (filter is FilterDescriptor fd) { var value = fd.ConvertedValue; retVal.AddFilter(new DynamicTableColumnFilter(fd.Member, TranslateOperator(fd.Operator, ref value), value)); } else { throw new InvalidOperationException("Unable to completely translate filter!"); } } return(retVal); }
/// <summary> /// Initializes a new instance of the DynamicAggregateFilter class /// </summary> /// <param name="type">the query-type of this AggregateFilter</param> /// <param name="innerFilter">the inner filter to use in this filter</param> public DynamicCompositeFilter(DynamicCompositeFilterType type, DynamicTableFilter[] innerFilter) : this(type) { this.innerFilter.AddRange(innerFilter); }