public ActionResult GetTestData(DataTableSettings model, ExtraParam modelParam)
        {
            var dt       = new PostsData();
            var result   = dt.Post.ToList();
            var jsonData = GetJsonObject(result.Count(), model, result, p => new IComparable[]
            {
                p.Id,
                p.Name,
                p.Description,
                p.Name + p.Description
            });

            return(Json(jsonData, JsonRequestBehavior.AllowGet));
        }
        public JsonResult GetData([FromBody] DataTableSettings settings)
        {
            List <Object> data = MockData.MockRows;

            IEnumerable <FilterExecutor> filterExecutors = settings.filters.Select(filter => FilterExecutor.Factory(filter));
            IEnumerable <Object>         filteredData    = filterExecutors.Execute(data);

            IEnumerable <Object> sortedData = settings.sorting.SortData(filteredData);

            IEnumerable <Object> pagedData = sortedData.Skip(settings.paging.size * settings.paging.pageNumber)
                                             .Take(settings.paging.size);

            settings.rows = pagedData.ToList();

            return(new JsonResult(JsonConvert.SerializeObject(settings)));
        }
        public object GetJsonObject(int?totalRow, DataTableSettings dt, IEnumerable <Post> query, Func <Post, IComparable[]> funcSelectedProperties)
        {
            var selectQuery = query.ToList();

            var total = totalRow.GetValueOrDefault();

            var rows = selectQuery.Select(it => funcSelectedProperties.Invoke(it).ToList());

            return(new
            {
                dt.draw,
                recordsTotal = selectQuery.Count,
                recordsFiltered = selectQuery.Count,
                data = rows.ToArray(),
                dt.start
            });
        }