예제 #1
0
 public virtual int Count(Search search)
 {
     if (search == null)
         throw new ArgumentNullException("search");
     var query = this.GetQuery(search);
     return query.Count();
 }
예제 #2
0
 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);
 }
예제 #3
0
 /// <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;
 }