/// <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); }
/// <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); }
public IQueryable <T> ApplyGeneric <T>(IQueryable <T> query, EntitySearchBase search, bool finalize) where T : EntityBase { return(searcher.ApplyGeneric <T>(query, search, finalize)); }
public IQueryable <T> ApplyFinal <T>(IQueryable <T> query, EntitySearchBase search) where T : EntityBase { return(searcher.ApplyFinal(query, search)); }