public virtual int Count(Search search) { if (search == null) throw new ArgumentNullException("search"); var query = this.GetQuery(search); return query.Count(); }
public virtual Paging<Screen> Select(Search search, int page, int size) { if (search == null) throw new ArgumentNullException("search"); var query = this.GetQuery(search); query = query.OrderByDescending(s => s.CreateTime); var metas = new Paging<ScreenMeta>(query, page, size); var screens = Mapper.Map<ScreenMeta[], Screen[]>(metas.Data); return new Paging<Screen>(screens, metas.PageCount, metas.TotalCount); }
/// <summary> /// 根据搜索条件生成查询 /// </summary> /// <param name="search"></param> /// <returns></returns> protected IQueryable<ScreenMeta> GetQuery(Search search) { var query = this._screenData.Table; //主键条件 if (search.Ids != null && search.Ids.Length > 0) query = query.Where(s => search.Ids.Contains(s.Id)); //编号条件 if (search.Codes != null && search.Codes.Length > 0) { var selector = new List<string>(); var arr = new object[search.Codes.Length]; for (var i = 0; i < search.Codes.Length; i++) { selector.Add(string.Format("Code=@{0}", i)); arr[i] = search.Codes[i]; } query = query.Where(string.Join(" OR ", selector.ToArray()), arr); } //状态条件 if (search.Status != null && search.Status.Length > 0) { var selector = new List<string>(); var arr = new object[search.Status.Length]; for (var i = 0; i < search.Status.Length; i++) { selector.Add(string.Format("Status=@{0}", i)); arr[i] = search.Status[i]; } query = query.Where(string.Join(" OR ", selector.ToArray()), arr); } //是否可用条件 if (search.Enabled.HasValue) query = query.Where(s => s.Enabled == search.Enabled.Value); return query; }