// for display datatable
        public ActionResult GetProducts(DataTableParamModel param)
        {
            var products = _db.Products.ToList();

            var viewProducts = products.Select(pro => new ProductTableModels() { ProductId = Convert.ToString(pro.ProductId), Name = pro.Name, Price = Convert.ToString(pro.Price), CategoryId = pro.Category == null ? null : Convert.ToString(pro.Category.CategoryId), CategoryName = pro.Category == null ? null : pro.Category.Name });

            IEnumerable<ProductTableModels> filteredProducts;

            if (!string.IsNullOrEmpty(param.sSearch))
            {
                filteredProducts = viewProducts.Where(pro => (pro.Name ?? "").Contains(param.sSearch) || (pro.Price ?? "").Contains(param.sSearch) || (pro.CategoryName ?? "").Contains(param.sSearch)).ToList();
            }
            else
            {
                filteredProducts = viewProducts;
            }

            var viewOdjects = filteredProducts.Skip(param.iDisplayStart).Take(param.iDisplayLength);

            var result = from proMdl in viewOdjects
                         select new[] { proMdl.ProductId, proMdl.Name, proMdl.Price, proMdl.CategoryId, proMdl.CategoryName };

            return Json(new
            {
                sEcho = param.sEcho,
                iTotalRecords = products.Count(),
                iTotalDisplayRecords = filteredProducts.Count(),
                aaData = result
            },
                            JsonRequestBehavior.AllowGet);
        }
        // for display datatable
        public ActionResult GetCategories(DataTableParamModel param)
        {
            var categories = _db.Categories.ToList();

            var viewProducts = categories.Select(cat => new CategoryTableModels() { CategoryId = Convert.ToString(cat.CategoryId), Name = cat.Name });

            IEnumerable<CategoryTableModels> filteredProducts;

            if (!string.IsNullOrEmpty(param.sSearch))
            {
                filteredProducts = viewProducts.Where(cat => (cat.Name ?? "").Contains(param.sSearch)).ToList();
            }
            else
            {
                filteredProducts = viewProducts;
            }

            var viewOdjects = filteredProducts.Skip(param.iDisplayStart).Take(param.iDisplayLength);

            var result = from catMdl in viewOdjects
                         select new[] { catMdl.CategoryId, catMdl.Name };

            return Json(new
            {
                sEcho = param.sEcho,
                iTotalRecords = categories.Count(),
                iTotalDisplayRecords = filteredProducts.Count(),
                aaData = result
            },
                            JsonRequestBehavior.AllowGet);
        }