Ejemplo n.º 1
0
        /// <summary>
        /// Apply generic final search parameters such as limit/skip/reverse
        /// </summary>
        /// <param name="query"></param>
        /// <param name="search"></param>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public IQueryable <T> ApplyFinal <T>(IQueryable <T> query, EntitySearchBase search) where T : EntityBase
        {
            var sort = search.Sort.ToLower();

            if (sort == "id" || string.IsNullOrWhiteSpace(sort))
            {
                if (search.Reverse)
                {
                    query = query.OrderByDescending(x => x.id);
                }
                else
                {
                    query = query.OrderBy(x => x.id);
                }
            }
            else if (sort == "random")
            {
                long modulo = 131071; //8191;
                long random = (new Random()).Next() & modulo;
                //query = query.OrderBy(x => ((x.id + random) * 7459) & modulo);
                query = query.OrderBy(x => ((x.id + random) * 66284) & modulo);
            }

            if (search.Skip >= 0)
            {
                query = query.Skip(search.Skip);
            }
            if (search.Limit >= 0)
            {
                query = query.Take(search.Limit);
            }

            return(query);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Apply generic base search parameters such as ids and create date constraints.
        /// </summary>
        /// <remarks>
        /// All interface search functions should call this
        /// </remarks>
        /// <param name="query"></param>
        /// <param name="search"></param>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public IQueryable <T> ApplyGeneric <T>(IQueryable <T> query, EntitySearchBase search, bool finalize) where T : EntityBase
        {
            if (search.Ids.Count > 0)
            {
                query = query.Where(x => search.Ids.Contains(x.id));
            }
            if (search.NotIds.Count > 0)
            {
                query = query.Where(x => !search.NotIds.Contains(x.id));
            }

            if (search.CreateEnd.Ticks > 0)
            {
                query = query.Where(x => x.createDate <= search.CreateEnd);
            }
            if (search.CreateStart.Ticks > 0)
            {
                query = query.Where(x => x.createDate >= search.CreateStart);
            }

            if (search.MaxId >= 0)
            {
                query = query.Where(x => x.id < search.MaxId);
            }
            if (search.MinId >= 0)
            {
                query = query.Where(x => x.id > search.MinId);
            }

            if (finalize)
            {
                query = ApplyFinal(query, search);
            }

            return(query);
        }
Ejemplo n.º 3
0
 public IQueryable <T> ApplyGeneric <T>(IQueryable <T> query, EntitySearchBase search, bool finalize) where T : EntityBase
 {
     return(searcher.ApplyGeneric <T>(query, search, finalize));
 }
Ejemplo n.º 4
0
 public IQueryable <T> ApplyFinal <T>(IQueryable <T> query, EntitySearchBase search) where T : EntityBase
 {
     return(searcher.ApplyFinal(query, search));
 }