} // 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
public PpsViewJoinVisitor(PpsViewJoinExpression owner) { this.owner = owner ?? throw new ArgumentNullException(nameof(owner)); } // ctor