public async Task <List <T> > ListAllAsync(int offset, int limit, FilterByExpressionModel filterByExpressionModel, string sort, string order) { try { if (filterByExpressionModel == null && string.IsNullOrEmpty(sort)) { return(await _dbSet.OrderByDescending(x => x.Id).Skip(offset).Take(limit).ToListAsync()); } else if (filterByExpressionModel == null && !string.IsNullOrEmpty(sort)) { var orderByExpression = $"{sort} {order}"; return(await _dbSet.OrderBy(orderByExpression).Skip(offset).Take(limit).ToListAsync()); } else if (filterByExpressionModel != null && string.IsNullOrEmpty(sort)) { return(await _dbSet.Where(filterByExpressionModel.Expression, filterByExpressionModel.Parameters.ToArray()).OrderByDescending(x => x.Id).Skip(offset).Take(limit).ToListAsync()); } else { var orderByExpression = $"{sort} {order}"; return(await _dbSet.Where(filterByExpressionModel.Expression, filterByExpressionModel.Parameters.ToArray()).OrderBy(orderByExpression).Skip(offset).Take(limit).ToListAsync()); } } catch (Exception ex) { throw ex; } }
public List <T> ListAll(int offset, int limit, FilterByExpressionModel filterByExpressionModel, string sort, string order, out int count) { try { count = 0; if (filterByExpressionModel == null && string.IsNullOrEmpty(sort)) { count = _dbSet.Count(); return(_dbSet.OrderByDescending(x => x.Id).Skip(offset).Take(limit).ToList()); } else if (filterByExpressionModel == null && !string.IsNullOrEmpty(sort)) { var orderByExpression = $"{sort} {order}"; count = _dbSet.Count(); return(_dbSet.OrderBy(orderByExpression).Skip(offset).Take(limit).ToList()); } else if (filterByExpressionModel != null && string.IsNullOrEmpty(sort)) { var records = _dbSet.Where(filterByExpressionModel.Expression, filterByExpressionModel.Parameters.ToArray()); count = records.Count(); return(records.OrderByDescending(x => x.Id).Skip(offset).Take(limit).ToList()); } else { var orderByExpression = $"{sort} {order}"; var records = _dbSet.Where(filterByExpressionModel.Expression, filterByExpressionModel.Parameters.ToArray()); count = records.Count(); return(records.OrderBy(orderByExpression).Skip(offset).Take(limit).ToList()); } } catch (Exception ex) { throw ex; } }
public FilterByExpressionModel GetFilterByModel(string value) { FilterByExpressionModel filterExpressionModel = null; if (!string.IsNullOrEmpty(value)) { filterExpressionModel = new FilterByExpressionModel(); StringBuilder expression = null; var singleFilter = true; dynamic filterObj = JsonConvert.DeserializeObject(value); int i = 0; foreach (var item in filterObj) { if (string.IsNullOrEmpty(Convert.ToString(item.Value))) { continue; } var appendAnd = singleFilter ? "" : " AND "; expression = new StringBuilder(); expression.Append($"{appendAnd}{item.Name}.ToString().Contains(@{i++})"); singleFilter = false; filterExpressionModel.Parameters.Add(Convert.ToString(item.Value)); } filterExpressionModel.Expression = expression.ToString(); } return(filterExpressionModel); }