Пример #1
0
        /// <summary>
        /// The Query.
        /// </summary>
        /// <param name="figures">The figures<see cref="IFigures"/>.</param>
        /// <param name="stage">The stage<see cref="int"/>.</param>
        /// <param name="filter">The filter<see cref="FilterTerms"/>.</param>
        /// <param name="sort">The sort<see cref="SortTerms"/>.</param>
        /// <param name="saveonly">The saveonly<see cref="bool"/>.</param>
        /// <param name="clearonend">The clearonend<see cref="bool"/>.</param>
        /// <returns>The <see cref="IFigures"/>.</returns>
        public static IFigures Query(this IFigures figures, int stage = 1, FilterTerms filter = null, SortTerms sort = null, bool saveonly = false, bool clearonend = false)
        {
            FigureFilter Filter = figures.Filter;
            FigureSort   Sort   = figures.Sort;

            if (filter != null)
            {
                Filter.Terms.Renew(filter.ToArray());
            }
            if (sort != null)
            {
                Sort.Terms.Renew(sort.ToArray());
            }
            if (!saveonly)
            {
                IFigures result = ResolveQuery(figures, Filter, Sort, stage);
                if (clearonend)
                {
                    figures.Filter.Terms.Clear();
                    figures.Filter.Evaluator  = null;
                    figures.View.QueryFormula = null;
                }
                return(result);
            }
            return(null);
        }
Пример #2
0
 /// <summary>
 /// The GetExpression.
 /// </summary>
 /// <param name="stage">The stage<see cref="int"/>.</param>
 /// <returns>The <see cref="Expression{Func{IFigure, bool}}"/>.</returns>
 public Expression <Func <IFigure, bool> > GetExpression(int stage = 1)
 {
     termsReducer.Clear();
     termsReducer.Add(Reducer.AsEnumerable().Concat(Terms.AsEnumerable()).ToArray());
     expression.Conditions = termsReducer;
     termsBuffer           = termsReducer;
     return(expression.CreateExpression(stage));
 }
Пример #3
0
 /// <summary>
 /// The Query.
 /// </summary>
 /// <param name="stage">The stage<see cref="int"/>.</param>
 /// <returns>The <see cref="IFigure[]"/>.</returns>
 public IFigure[] Query(int stage = 1)
 {
     termsReducer.Clear();
     termsReducer.Add(Reducer.AsEnumerable().Concat(Terms.AsEnumerable()).ToArray());
     expression.Conditions = termsReducer;
     termsBuffer           = termsReducer;
     return(figures.AsEnumerable().AsQueryable().Where(expression.CreateExpression(stage).Compile()).ToArray());
 }
Пример #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FigureFilter"/> class.
 /// </summary>
 /// <param name="figures">The figures<see cref="IFigures"/>.</param>
 public FigureFilter(IFigures figures)
 {
     this.figures = figures;
     expression   = new QueryExpression();
     Reducer      = new FilterTerms(figures);
     Terms        = new FilterTerms(figures);
     termsBuffer  = expression.Conditions;
     termsReducer = new FilterTerms(figures);
 }
        /// <summary>
        /// The Clone.
        /// </summary>
        /// <returns>The <see cref="FilterTerms"/>.</returns>
        public FilterTerms Clone()
        {
            FilterTerms ft = new FilterTerms();

            foreach (FilterTerm t in this)
            {
                FilterTerm _t = new FilterTerm(t.RubricName, t.Operand, t.Value, t.Logic, t.Stage);
                ft.Add(_t);
            }
            return(ft);
        }
Пример #6
0
 public QueryExpression()
 {
     Conditions = new FilterTerms();
     nfi.NumberDecimalSeparator = ".";
     Stage = 1;
 }