示例#1
0
 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;
     }
 }
示例#2
0
 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;
     }
 }
示例#3
0
        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);
        }