private IQuery <T> QueryiSearch(string propertyName, string queryVal) { string tempQueryFiled = string.Empty; while (tempQueryFiled != queryVal) { tempQueryFiled = queryVal; queryVal = queryVal.Replace("+ ", "+").Replace(" +", "+"); } var query_Search = QueryFactory.Create <T>(); string[] lst = queryVal.Split(new string[] { " ", " ", " ", " "}, StringSplitOptions.RemoveEmptyEntries); foreach (var f in lst) { if (string.IsNullOrWhiteSpace(f)) { continue; } var q = QueryFactory.Create <T>(); string[] lstInfo; if (f.Contains("+") || f.Contains("+")) { lstInfo = f.Split(new string[] { "+", "+" }, StringSplitOptions.RemoveEmptyEntries); } else { lstInfo = new string[] { f }; } foreach (var info in lstInfo) { if (!string.IsNullOrWhiteSpace(info)) { q.And(DBTool.GetContains <T>(propertyName, info)); } } query_Search.Or(q); } return(And(query_Search)); }