The Linq projection operator is used to retrieve one or more from the tables. Its like select syntax of the standard SQL query. Select and Select many are two types of linq projection operators.

Linq projection operators

  • Select many
  • Select

Linq Select Operator

The select operator is used to retrieving data from the list or collection. Its same as SQL select query.

Syntax

var data = from s in user select u

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LinqDemoes
{
    class Program
    {
        static void Main(string[] args)
        {
            List<User> user = new List<User>()
            {
                new User() { UserId = 1, Name = "Faisal", Age = 21 },
                new User() { UserId = 2, Name = "Irshad", Age = 18 },
                new User() { UserId = 2, Name = "Bhavdip", Age = 28 },
                new User() { UserId = 3, Name = "Kaushik", Age = 28 },
                new User() { UserId = 4, Name = "Kirti", Age = 25 }
            };
            var data = from s in user
                         select new {
                             Name = s.Name,
                             ID = s.UserId,
                             Age = s.Age
                         };
            foreach (var item in data)
            {
                Console.WriteLine("The User name is {0} ID is {1} Age is {2}", item.Name, item.ID, item.Age);
            }
            Console.ReadLine();
        }
        public class User
        {
            public int UserId { get; set; }
            public string Name { get; set; }
            public int Age { get; set; }
        }
    }
}

Here, we have select all the users from the list and store it in s variable and then created a new selection for the users

Output:

The User name is Faisal ID is 1 Age is 21
The User name is Irshad ID is 2 Age is 18
The User name is Bhavdip ID is 2 Age is 28
The User name is Kaushik ID is 3 Age is 28
The User name is Kirti ID is 4 Age is 25

Linq Select Many Operator

Select Many operator is used for selecting values from the collection of data of a collection of data i.e nested collection

Syntax

var data = user.SelectMany(m => m.Hobby);

Example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LinqDemoes
{
    class Program
    {
        static void Main(string[] args)
        {
            List<User> user = new List<User>()
            {
                new User() { UserId = 1, Name = "Faisal", Age = 21, Hobby = new List<string> { "Coding", "Driving" } },
                new User() { UserId = 2, Name = "Irshad", Age = 18, Hobby = new List<string> { "Coding1", "Driving1" }  },
                new User() { UserId = 2, Name = "Bhavdip", Age = 28, Hobby = new List<string> { "Coding2", "Driving2" }  },
                new User() { UserId = 3, Name = "Kaushik", Age = 28, Hobby = new List<string> { "Coding3", "Driving3" }  },
                new User() { UserId = 4, Name = "Kirti", Age = 25, Hobby = new List<string> { "Coding4", "Driving4" }  }
            };
            var data = user.SelectMany(m => m.Hobby);
            foreach (var item in data)
            {
                Console.WriteLine(item);
            }
            Console.ReadLine();
        }
        public class User
        {
            public int UserId { get; set; }
            public string Name { get; set; }
            public int Age { get; set; }
            public List<string> Hobby { get; set; }
        }
    }
}

As you can see the SelectMany had written all the array of string otherwise we have to use the loop for accessing multiple properties.

Output:

Coding
Driving
Coding1
Driving1
Coding2
Driving2
Coding3
Driving3
Coding4
Driving4