public static bool BuildMultiTermQuery(DtColumn dtColumn, out QueryCondition result, DbColumnMetadata dbColumn) { var terms = dtColumn.Search.Value.Split(" ", StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries); var queryStrL = new List <string>(); if (terms.Length == 0) { // result = null; result = new QueryCondition(); return(false); } if (terms.Length > 7) { terms = new[] { dtColumn.Search.Value.Trim() }; } for (var index = 0; index < terms.Length; index++) { var format = dbColumn.DbFuncFormat; var qCond = BuildCondition(dbColumn.DbColumn, terms[index], format, paramName: "param" + index, objectName: string.IsNullOrEmpty(format) ? "(string)(object)x" : "x"); queryStrL.Add(qCond.Query); } var qStrFinal = string.Join(" && ", queryStrL); var qParam = DummyDynamicQueryParams.Create(terms.Cast <object>().ToList()); result = new QueryCondition(qStrFinal, qParam); return(true); }
protected abstract QueryCondition BuildFilter(DtColumn col);
protected abstract DbColumnMetadata GetDbColumn(DtColumn column);
protected abstract bool IsServerSideSortable(DtColumn column);
protected abstract bool IsGlobalServerSideFilterable(DtColumn column);