Webgrid Paging, sorting and filtering in ASP.Net MVC

Today, In this tutorial I will show you webgrid Paging, sorting and filtering functionality in asp.net MVC application.

It is an essential approach to using paging, sorting and filtering technique in applications where a lot of data to be loaded from a database. So here in this article, I have tried to show how we can do this just following few simple steps.
Webgrid Paging, sorting and filtering in ASP.Net MVC
First Name Last Name Email City Country
aa aa advkiranwagaj@gmail.com a a
aa aa advkiranwagaj@gmail.com a a
ad asd sd asd
Dave Thomas rubol30@gmail.com Dhaka Bangladesh
DXZFVDZFASFA22 aksdk dlaksdl@asd.com lasdk test
flsdfh lsjdrs oi@sd.xc sf spdf gpsdf
hello sd a@gmail.com hyd ts
Jacob Bracken jacob@email.com Aylesbury UK
Kelly Davis Cummings@gmail.com d d
kiran kumar32 kirancse728@gmail.com dfadf indian
Webgrid Paging, sorting and filtering in ASP.Net MVC
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Linq.Dynamic;

namespace WebgridPagingSortingFiltering.Controllers
    public class HomeController : Controller
        public ActionResult Index(int page =1, string sort = "FirstName", string sortdir="asc", string search="")
            int pageSize = 10;
            int totalRecord = 0;
            if (page < 1) page = 1;
            int skip = (page * pageSize) - pageSize;
            var data = GetEmployees(search, sort, sortdir, skip, pageSize, out totalRecord);
            ViewBag.TotalRows = totalRecord;
            ViewBag.search = search;
            return View(data);

        public List<Employee> GetEmployees(string search, string sort, string sortdir, int skip, int pageSize, out int totalRecord)
            using (MyDatabaseEntities dc = new MyDatabaseEntities())
                var v = (from a in dc.Employees
                                    a.FirstName.Contains(search) ||
                                    a.LastName.Contains(search) ||
                                    a.EmailID.Contains(search) ||
                                    a.City.Contains(search) ||
                            select a
                totalRecord = v.Count();
                v = v.OrderBy(sort + " " + sortdir);
                if (pageSize > 0)
                    v = v.Skip(skip).Take(pageSize);
                return v.ToList();
Posted By :