Esempio n. 1
0
            }             // func CreateSelectorAsync

            /// <summary>Create a selector from a select information.</summary>
            /// <param name="select"></param>
            /// <param name="columns"></param>
            /// <param name="filter"></param>
            /// <param name="order"></param>
            /// <param name="throwException"></param>
            /// <returns></returns>
            public async Task <PpsDataSelector> CreateSelectorAsync(string select, PpsDataColumnExpression[] columns, PpsDataFilterExpression filter = null, PpsDataOrderExpression[] order = null, bool throwException = true)
            {
                if (String.IsNullOrEmpty(select))
                {
                    throw new ArgumentNullException(nameof(select));
                }

                // create selector
                var selectorInfo = new PpsViewJoinExpression(this, select, throwException);

                if (!selectorInfo.IsValid && !throwException)
                {
                    return(null);
                }

                // create selector
                var selector = await selectorInfo.CreateSelectorAsync();

                if (selector == null)
                {
                    return(null);
                }

                // column restrictions
                if (!PpsDataColumnExpression.IsEmpty(columns))
                {
                    selector = selector.ApplyColumns(columns);
                }

                // apply filter rules
                if (!PpsDataFilterExpression.IsEmpty(filter))
                {
                    selector = selector.ApplyFilter(filter, selectorInfo.LookupFilter);
                }

                // apply order
                if (!PpsDataOrderExpression.IsEmpty(order))
                {
                    selector = selector.ApplyOrder(order, selectorInfo.LookupOrder);
                }

                return(selector);
            }             // func CreateSelector
Esempio n. 2
0
 public PpsViewJoinVisitor(PpsViewJoinExpression owner)
 {
     this.owner = owner ?? throw new ArgumentNullException(nameof(owner));
 }                     // ctor