private DataTable ProcessDataTable(DataTable dataTable, IEnumerable <Filter> outerFilters = null, IEnumerable <IColumn> columns = null) { if (dataTable == null || dataTable.Rows.Count == 0) { return(dataTable); } DataTable dt = dataTable; //Apply sorting if (columns != null && columns.Any()) { dt = dt.OrderBy(columns); } //Apply sent filter here if (outerFilters != null && outerFilters.Any()) { string predicate = ReportFilterHelper.BuildOuterPredicate(outerFilters); if (string.IsNullOrEmpty(predicate)) { return(dt); } var filteredResult = dt.Select(predicate); var dtc = dataTable.Clone(); dtc.CopyToDataTable(filteredResult); //copy filtered dt to result dt = dtc; } return(dt); }
private string ProcessQuery(string query, IEnumerable <Filter> innerFilters = null) { if (innerFilters == null) { return(query); } var q = query; //Apply inner filters from filters foreach (var innerFilter in innerFilters) { var filterQuery = innerFilter.Value != null?ReportFilterHelper.BuildPredicate(innerFilter) : ""; q = q.Replace("@" + innerFilter.ParameterName, filterQuery); } return(q); }