示例#1
0
        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));
        }