/// <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); }
/// <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)); }
/// <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()); }
/// <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); }
public QueryExpression() { Conditions = new FilterTerms(); nfi.NumberDecimalSeparator = "."; Stage = 1; }