Support us .Net Basics C# SQL ASP.NET ADO.NET MVC Slides C# Programs Subscribe Buy DVD

Part 13 - Implement paging using skip and take operators

Suggested Videos
Part 10 - Ordering Operators in LINQ
Part 11 - Ordering Operators in LINQ - II
Part 12 - Partitioning Operators



In this video, we will discuss implementing paging using Skip and Take operators in LINQ.



We will use the following Student class in this demo. Notice that, there are 11 total Students. We want to display a maximum of 3 students per page. So there will be 4 total pages. The last page, i.e Page 4 will display the last 2 students.
public class Student
{
    public int StudentID { get; set; }
    public string Name { get; set; }
    public int TotalMarks { get; set; }

    public static List<Student> GetAllStudetns()
    {
        List<Student> listStudents = new List<Student>
        {
            new Student { StudentID= 101, Name = "Tom", TotalMarks = 800 },
            new Student { StudentID= 102, Name = "Mary", TotalMarks = 900 },
            new Student { StudentID= 103, Name = "Pam", TotalMarks = 800 },
            new Student { StudentID= 104, Name = "John", TotalMarks = 800 },
            new Student { StudentID= 105, Name = "John", TotalMarks = 800 },
            new Student { StudentID= 106, Name = "Brian", TotalMarks = 700 },
            new Student { StudentID= 107, Name = "Jade", TotalMarks = 750 },
            new Student { StudentID= 108, Name = "Ron", TotalMarks = 850 },
            new Student { StudentID= 109, Name = "Rob", TotalMarks = 950 },
            new Student { StudentID= 110, Name = "Alex", TotalMarks = 750 },
            new Student { StudentID= 111, Name = "Susan", TotalMarks = 860 },
        };

        return listStudents;
    }
}

Here is what we want to do
1. The program should prompt the user to enter a page number. The Page number must be between 1 and 4.
2. If the user does not enter a valid page number, the program should prompt the user to enter a valid page number.
3. Once a valid page number is entered, the program should display the correct set of Students

For example, the output of the program should be as shown below.
skip and take in linq paging

The following console application use Skip() and Take() operators to achieve this.
using System;
using System.Collections.Generic;
using System.Linq;

namespace Demo
{
    class Program
    {
        public static void Main()
        {
            IEnumerable<Student> students = Student.GetAllStudetns();

            do
            {
                Console.WriteLine("Please enter Page Number - 1,2,3 or 4");
                int pageNumber = 0;

                if (int.TryParse(Console.ReadLine(), out pageNumber))
                {
                    if (pageNumber >= 1 && pageNumber <= 4)
                    {
                        int pageSize = 3;
                        IEnumerable<Student> result = students
                                                     .Skip((pageNumber - 1) * pageSize).Take(pageSize);

                        Console.WriteLine();
                        Console.WriteLine("Displaying Page " + pageNumber);
                        foreach (Student student in result)
                        {
                            Console.WriteLine(student.StudentID + "\t"
                                                                        student.Name + "\t" + student.TotalMarks);
                        }
                        Console.WriteLine();
                    }
                    else
                    {
                        Console.WriteLine("Page number must be an integer between 1 and 4");
                    }
                }
                else
                {
                    Console.WriteLine("Page number must be an integer between 1 and 4");
                }
            } while (1 == 1);
        }
    }
}

Please Note: The condition in the while loop puts the program in an infinite loop. To end the program, simply close the console window.

linq tutorial

No comments:

Post a Comment

If you like this website, please share with your friends on facebook and Google+ and recommend us on google using the g+1 button on the top right hand corner.