public async Task <JsonResult> ListAsync() { var draw = HttpContext.Request.Form["draw"].FirstOrDefault(); string start = (Request.Form["start"].FirstOrDefault()).ToString(); int length = Request.Form["length"].FirstOrDefault(); string sortColumn = (Request.Form["columns[" + Request.Form["order[0][column]"].FirstOrDefault() + "][name]"].FirstOrDefault()).ToString(); string sortColumnDirection = (Request.Form["order[0][dir]"].FirstOrDefault()).ToString(); var searchValue = Request.Form.GetValues("search[value]").FirstOrDefault(); int pageSize = length != null?Convert.ToInt32(length) : 0; int skip = start != null?Convert.ToInt32(start) : 0; int recordsTotal = 0; var dat = await service.List(); var dataQ = dat.AsQueryable(); if (!string.IsNullOrEmpty(searchValue.ToString()) && searchValue.ToString().Length > 2) { dataQ = dataQ.Where(m => m.CompanyName.IndexOf(searchValue.ToString(), StringComparison.OrdinalIgnoreCase) >= 0); } recordsTotal = dataQ.Count(); var data = dataQ.Skip(skip).Take(pageSize).ToList(); return(Json(new { draw, recordsFiltered = recordsTotal, recordsTotal, data }, JsonRequestBehavior.AllowGet)); }