/// <summary> /// Get entity by Lamda /// </summary> /// <param name="predicate">Lamda(p=>p.Id==Id)</param> /// <returns></returns> public virtual List <T> LoadListAll <TKey>(QueryableOrderEntry <T, TKey> orderQuery, Expression <Func <T, bool> > predicate = null) { if (orderQuery.OrderDirection == OrderDirection.DESC) { return(predicate != null?_dbContext.Set <T>().Where(predicate).OrderByDescending(orderQuery.Expression).AsNoTracking().ToList() : _dbContext.Set <T>().AsQueryable <T>().OrderByDescending(orderQuery.Expression).AsNoTracking().ToList()); } else { return(predicate != null?_dbContext.Set <T>().Where(predicate).OrderBy(orderQuery.Expression).AsNoTracking().ToList() : _dbContext.Set <T>().AsQueryable <T>().OrderBy(orderQuery.Expression).AsNoTracking().ToList()); } }
/// <summary> /// Get entity by Lamda /// </summary> /// <param name="predicate">Lamda(p=>p.Id==Id)</param> /// <returns></returns> public virtual T Get <TKey>(Expression <Func <T, bool> > predicate, QueryableOrderEntry <T, TKey> orderQuery) { if (orderQuery.OrderDirection == OrderDirection.DESC) { return(_dbContext.Set <T>().AsNoTracking().OrderByDescending(orderQuery.Expression).FirstOrDefault(predicate)); } else { return(_dbContext.Set <T>().AsNoTracking().OrderBy(orderQuery.Expression).FirstOrDefault(predicate)); } }
/// <summary> /// paging by linq /// </summary> /// <typeparam name="TKey"></typeparam> /// <param name="whereQuery">condition</param> /// <param name="orderQuery">sorting</param> /// <param name="pageId">pageId,form 0</param> /// <param name="pageSizes">pageSize</param> /// /// <param name="selector">select</param> /// <returns></returns> public virtual PagedynamicResult <T> GetLinqPage <TKey>(Expression <Func <T, bool> > whereQuery, QueryableOrderEntry <T, TKey> orderQuery, int pageId, int pageSizes) { pageId = pageId < 1 ? 1 : pageId - 1; List <T> data = new List <T>(); _dbContext.Database.SetCommandTimeout(300); var query = _dbContext.Set <T>().Where(whereQuery);// repository.TableNoTracking.Where(whereQuery); int count = query.Count(); if (orderQuery.OrderDirection == OrderDirection.DESC) { data = query.OrderByDescending(orderQuery.Expression) .Skip(pageSizes * pageId) .Take(pageSizes).ToList <T>(); } else { data = query .OrderBy(orderQuery.Expression) .Skip(pageSizes * pageId) .Take(pageSizes).ToList <T>(); } return(new PagedynamicResult <T> { Data = data, ItemCount = count, PageSize = pageSizes, PageIndex = pageId + 1 }); }