public static GridDataResult <T> ApplyPaging <T>(this IQueryable <T> query, GridState queryModel)
        {
            if (queryModel == null)
            {
                queryModel = new GridState()
                {
                    skip = 0, take = 10
                }
            }
            ;

            var count = query.Count();

            if (queryModel == null || (queryModel.take == 0 && queryModel.skip == 0))
            {
                queryModel = new GridState()
                {
                    skip = 0,
                    take = 10
                }
            }
            ;

            query = query.Skip(queryModel.skip).Take(queryModel.take);

            var result = new GridDataResult <T>();

            result.total = count;
            result.data  = query.ToList();

            return(result);
        }
        public async static Task <GridDataResult <T> > ApplyPagingAsync <T>(this IQueryable <T> query, GridState queryModel)
        {
            var count = query.Count();

            if (queryModel == null)
            {
                queryModel = new GridState()
                {
                    skip = 0,
                    take = 10
                }
            }
            ;

            query = query.Skip(queryModel.skip).Take(queryModel.take);

            var result = new GridDataResult <T>();

            result.total = count;
            result.data  = await query.ToListAsync();

            return(result);
        }