ITORIAN    

  public string Welcome() {

      return "Abhimanyu's Thoughts";

  }

My First E-Book
Quick Report
Yearly Posts:
   i) Oct-Nov 2010: 12
   ii) In 2011: 380
   iii) In 2012: 32

You can find my articles and blogs on:
   i) itorian.com
   ii) c-sharpcorner.com
   iii) dotnetfunda.com
   iv) codeproject.com

Greatest Hits
People I Follow
Disclaimer
This is my personal website and the opinions I have expressed here is my own. For any accuracy I recommend to visit official websites like MSDN for Microsoft. I developed this website to share my technical skills.

What is LINQ? Learn it by solving problems.
[In this quick post you will learn about LINQ by solving common problems in non-LINQ based programs.]
Abhimanyu Kumar Vatsa

IT Faculty || I blog on Microsoft Technologies || Mindcracker MVP || Founder of ITORIAN.COM
   

Introduction

LINQ (Language INtegrated Query) fills the gap between programming languages and database.

According to Anders Hejlsberg (C# Chief Architect):-

“Microsoft’s original motivation behind LINQ was to address the impedance mismatch between programming languages and database.”

If we compare LINQ to SQL, LINQ is simpler, tidier and very handy to use. It’s rather like comparing C# to C/C++ Programming, the time is gone when C/C++ was best but now coder needs something special like LINQ and it’s a big win. SQL is a very old language that was invented about 1974. Since then it's been extended endlessly, but never redesigned. This has made the language messy. You might have become so accustomed to this that you can't see anything wrong.

I think my above lines will increase your concrete knowledge about Microsoft LINQ, so let’s look at some problems and we will solve this using LINQ and non-LINQ.

Question: We have a collection of Student objects and we want to find out three students who have minimum age.

Look at the non-LINQ Solution:-

using System;

using System.Collections.Generic;

 

namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            // create the object of the class and assigning values

            Student[] std = {

                                  new Student { Name = "Abhimanyu", Age = 21 },

                                  new Student { Name = "Deepak", Age = 10 },

                                  new Student { Name = "Mahtab", Age = 15 },

                                  new Student { Name = "Ravi", Age = 12 },

                                  new Student { Name = "Avnish", Age = 13 }

                              };

 

            // define the array to hold the results

            Student[] results = new Student[3];

 

            // short the contents of the array

            Array.Sort(std, (student1, student2) => {

                return Comparer<decimal>.Default.Compare(student1.Age, student2.Age);

            });

 

            // get the first three students in the array as the results

            Array.Copy(std, results, 3);

 

            // print out the name

            foreach (Student s in results)

            {

                Console.WriteLine("Name: {0}, Age: {1}", s.Name, s.Age);

            }

 

            Console.ReadKey();

        }

    }

 

    //class

    class Student

    {

        public string Name { get; set; }

        public int Age { get; set; }

    }

}

 

Now by using LINQ we can significantly simplify the querying process, look at example below.

using System;

using System.Linq;

 

namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            // create the object of the class and assigning values

            Student[] std = {

                                  new Student { Name = "Abhimanyu", Age = 21 },

                                  new Student { Name = "Deepak", Age = 10 },

                                  new Student { Name = "Mahtab", Age = 15 },

                                  new Student { Name = "Ravi", Age = 12 },

                                  new Student { Name = "Avnish", Age = 13 }

                              };

 

            // using LINQ

            var results = from s in std

                          orderby s.Age ascending

                          select new

                          {

                              s.Name, s.Age

                          };

 

            int count = 0;

            // print the name

            foreach (var a in results)

            {

                Console.WriteLine("Name: {0}, Age: {1}", a.Name, a.Age);

                if (++count == 3)

                {

                    break;

                }

            }

            Console.ReadKey();

        }

    }

 

    //class

    class Student

    {

        public string Name { get; set; }

        public int Age { get; set; }

    }

}

 

Remember to add a namespace using System.Linq.

This is lot neater. You can see SQL like query is used that is LINQ. We order the student objects in ascending and descending order and use the select keyword to return an anonymous type that contains just the properties we want. This style of LINQ is known as query syntax and it is the kind most developers familiar with.

Happy Coding !!



Join us on Facebook. Join us on Twitter.

   



Approved Comments

No any comment found.