Select and SelectMany are projection operators. Select operator is used to select value from a collection and SelectMany operator is used to select values from a collection of collection i.e. nested collection.
Select operator produce one result value for every source value while SelectMany produce a single result that contains a concatenated value for every source value. Actually, SelectMany operator flatten IEnumerable<IEnumerable<T>> to IEnumrable<T> i.e. list of list to list.
class Employee { public string Name { get; set; } public List < string > Skills { get; set; } } class Program { static void Main(string[] args) { List < Employee > employees = new List < Employee > (); Employee emp1 = new Employee { Name = "Deepak", Skills = new List < string > { "C", "C++", "Java" } }; Employee emp2 = new Employee { Name = "Karan", Skills = new List < string > { "SQL Server", "C#", "ASP.NET" } }; Employee emp3 = new Employee { Name = "Lalit", Skills = new List < string > { "C#", "ASP.NET MVC", "Windows Azure", "SQL Server" } }; employees.Add(emp1); employees.Add(emp2); employees.Add(emp3); // Query using Select() IEnumerable < List < String >> resultSelect = employees.Select(e = > e.Skills); Console.WriteLine("Using Select():\n"); // Two foreach loops are required to iterate through the results // because the query returns a collection of arrays. foreach(List < String > skillList in resultSelect) { foreach(string skill in skillList) { Console.WriteLine(skill); } Console.WriteLine(); } // Query using SelectMany() IEnumerable < string > resultSelectMany = employees.SelectMany(emp = > emp.Skills); Console.WriteLine("Using SelectMany():"); // Only one foreach loop is required to iterate through the results // since query returns a one-dimensional collection. foreach(string skill in resultSelectMany) { Console.WriteLine(skill); } Console.ReadKey(); } } /*Output : Using Select(): C C++ Java SQL Server C# ASP.NET C# ASP.NET MVC Windows Azure SQL Server Using SelectMany(): C C++ Java SQL Server C# ASP.NET C# ASP.NET MVC Windows Azure SQL Server */