Exemplo n.º 1
0
 /// <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);
        }
Exemplo n.º 3
0
 /// <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);
 }