private void BuildTextSearchWhereFIlters( SelectQuery query, string queryText, MappedSearchRequest request) { if (!string.IsNullOrEmpty(queryText) && CanFilterOnText()) { var canUseFullText = false; var queryColumns = request.TextFilterColumns; if ((queryColumns == null || !queryColumns.Any()) && _constants.TextSearchColumnId > 0) { // set queryColumns to the default column var defaultTextSearchColumn = _columnProvider.GetColumnMapping(_constants.DataSourceId, _constants.TextSearchColumnId); queryColumns = new List <ReportColumnMapping>() { defaultTextSearchColumn }; canUseFullText = _constants.FullTextSearchEnabled; } if (!queryColumns.Any()) { // do nothing return; } // Add Text Search if (queryText.StartsWith("*")) { queryText = queryText.Substring(1); // remove the * canUseFullText = false; } if (canUseFullText) { // we are using the default column (and there's only 1) var tableMapping = _tableMappings.GetTableMapping(queryColumns.First().KnownTable); query.WhereColumnContains(tableMapping.Alias, queryColumns.First().FieldName, queryText, ContainsMode.FreeText); } else { var filters = new WhereFilterCollection(); foreach (var column in queryColumns) { var tableMapping = _tableMappings.GetTableMapping(column.KnownTable); filters.WhereColumnLike(tableMapping.Alias, column.FieldName, queryText, LikeMode.FreeText); } query.WhereCollection(Combine.Or, filters); } } }
public static WhereFilterCollection WhereColumnLike(this WhereFilterCollection query, Table leftTable, string leftField, string text, LikeMode mode = LikeMode.Default) { query.WhereColumnLike(leftTable.Alias, leftField, text, mode); return(query); }