Example #1
0
        public async Task <IActionResult> DynamicQuery([FromBody] DynamicQueryModel model)
        {
            var res = extractDbService.ExecQuery(model.Query, model.Paramaters);

            return(Json(new ResultBase <DataTable>()
            {
                success = true, data = res
            }));
        }
        public static PageResult <TEntity> AutoQueryAsync <TEntity>(IQueryable <TEntity> source, DynamicQueryModel dynamicQuery, bool count)
        {
            var s = source;

            if (!string.IsNullOrWhiteSpace(dynamicQuery.Where))
            {
                s = source.Where(dynamicQuery.Where, dynamicQuery.WhereValue.ToArray());
            }
            if (!string.IsNullOrWhiteSpace(dynamicQuery.Order))
            {
                s = s.OrderBy(dynamicQuery.Order);
            }
            if (!dynamicQuery.IsPager)
            {
                if (string.IsNullOrWhiteSpace(dynamicQuery.Select))
                {
                    return new PageResult <TEntity>()
                           {
                               Rows = s.ToList()
                           }
                }
                ;
                return(new PageResult <TEntity>()
                {
                    Rows = source.Select(dynamicQuery.Select).Cast <TEntity>().ToList()
                });
            }

            var pageResult = new PageResult <TEntity>
            {
                Total = count ? s.Count() : 0
            };

            if (string.IsNullOrWhiteSpace(dynamicQuery.Select))
            {
                pageResult.Rows = s
                                  .Skip(dynamicQuery.Skip < 0 ? 0 : dynamicQuery.Skip)
                                  .Take(dynamicQuery.Take < 0 ? 10 : dynamicQuery.Take)
                                  .ToList();
            }
            else
            {
                pageResult.Rows = (s.Select(dynamicQuery.Select)
                                   .Skip(dynamicQuery.Skip < 0 ? 0 : dynamicQuery.Skip)
                                   .Take(dynamicQuery.Take < 0 ? 10 : dynamicQuery.Take)).Cast <TEntity>().ToList();
            }
            return(pageResult);
        }
    }