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.
Example:
Example:
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("**************** Select ******************"); // 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("**************** 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 **************** Select ****************** C C++ Java SQL Server C# ASP.NET C# ASP.NET MVC Windows Azure SQL Server **************** SelectMany ****************** C C++ Java SQL Server C# ASP.NET C# ASP.NET MVC Windows Azure SQL Server */
0 comments:
Post a Comment