public ActionResult Grid()
        {
            var skip     = 0;
            var pageSize = 0;
            var total    = 0;

            // get IQueryable instance
            var query = _repo.Users.Fetch();

            total = query.Count();

            // apply Grid Orders and Filters
            IQueryable <User> users = KendoGrid <User> .GridQueryable(query, Request, out skip, out pageSize);

            // apply additional conditions if any

            // ordery by if request has no sortby
            if (string.IsNullOrEmpty(KendoGrid <object> .OrderByExistInRequest(Request)))
            {
                users = users?.OrderBy(o => o.Name);
            }

            // pagination conditions
            users = users?.Skip(skip).Take(pageSize);

            // format data according to grid frontend
            var data = users?.ToList().Select(d => new
            {
                Id         = d.Id,
                Name       = d.Name,
                Email      = d.Email,
                ActionLink = KendoGrid <object> .GenerateButtons("Users", d.Id, true, true, false)
            });

            //return Json(data, JsonRequestBehavior.AllowGet);
            return(Json(new { total, data }, JsonRequestBehavior.AllowGet));
        }